From: Marian S. <m.s...@gm...> - 2008-06-09 08:57:16
|
Hi, > Ah, yes. While storing a document, eXist buffers index entries in memory > before it writes them to disk. It will use as much memory as available, > with a certain base amount of memory reserved for the page caches. The > buffered index entries will be flushed whenever the memory limit is > reached. Ok, that explains everything :) Maybe this mechanism should be explained anywhere in the docs so that other users know about if they run into the same issue. >> Anyway, it would be fine if one could provide an upper limit >> via conf.xml. > > The problem here is that the Java VM increases its memory use > dynamically until it reaches the value set by -Xmx (max size). If the > Java application doesn't request more memory, it will never grow above > -Xms (min size). This means that if we flush the buffered indexes too > early, eXist may just keep running with the minimum amount of memory > defined via -Xms. The result is: much more IO than would be necessary, > frequent garbage collection and a considerable drop in performance. > > If we want to set a limit, or rather: a flush-all-buffers-threshold, in > conf.xml, we would need to set -Xms = -Xmx. This should be possible, > though not always desirable. You're right, limiting should probably be done via proper JVM initialization (as it already works ;)). Regards, Marian |