Hi, On Mon, Feb 25, 2008 at 6:16 PM, Tong Fin <[EMAIL PROTECTED]> wrote: > My applications needs to create a large number of nodes. > At some point in the node creation, I got "out of memory" exception. > > To avoid this "out of memory" problem, from time to time, my application > call "Session.save" or "Node.save" methods.
Yes, this is currently (until Jackrabbit starts storing the transient space on disk) the correct solution. > But, this "save" method is very slow (processing 20000 nodes can take about > 30 minutes!). Could you describe the contents of your nodes in more detail? How many properties or child nodes per node? Any large binary properties? Also, are you using an external database or the default embedded Derby for persistence? Jackrabbit performance gets hit pretty bad if the network roundtrip time to an external database is high. > I am usinng 1.3.3 version. I assume you use the default database persistence manager. You might want to try switching to bundle persistence (available in 1.3, default in 1.4) that typically gives a major performance boost for cases like yours. Also, if you have many large binary properties, upgrading to 1.4 (with jackrabbit-core 1.4.1) and enabling the new data store feature would remove a lot of extra copying between the transient space and the persistence layer. BR, Jukka Zitting
