On 07/02/12 12:15, Emilio Migueláñez Martín wrote:
Hi Andy,
Hi Emilo - thanks for the feedback,
I have doing some work on this, trying to understand what is happening. My
findings can be summarised as follows:
-- The readings of the memory (possibly being leaked) are between 1% and 5% of
the total heap size being used. So, I agree with you that there was not any
memory leaks, just cache filling up. So I could conclude it was a false alarm?!
*I* hope so!
--- Although it is not a memory leak, the memory keeps growing (not fast). I
haven't run it long enough to reach the stable state.
-- Node.cache(false) didn't make any different
If caches are filling, then whether this make a difference is probably
masked. It's a smaller cache anyway and if the TDB node is caching a
node, then the Node.cache is the same object. It uses a faster, less
subtle, cache policy to work with memory only. Disk is expensive so
more complicated and bigger caches make sense.
I'd like the cache sizes more easily tunable but haven't got round to that.
-- Found a trivial memory leak on my query execution method, by not closing the
ByteArrayOutputStream that collects the solution set.
I will keep doing some more testing around this area.
Please see below the testing src code.
Regards,
Emilio
Andy