GC leaks debugging

Andrew Haley aph@redhat.com
Wed Apr 6 18:33:00 GMT 2011


On 04/06/2011 03:29 PM, Erik Groeneveld wrote:
>>> The tests work fine on OpenJDK.  What could cause GCJ to grow the heap
>>> infinitely?
>>
>> I don't know because you won't show me the tests.
> 
> Yeah, of course, sorry.  I forgot to tell a few things.
> 
> This problem has been bothering me quite some time now, and I decided
> to solve it once and forever.  I have written many different test, but
> I am still not able to pinpoint a simple program to demonstrate the
> results.  The problem occurred initially while using Lucene, but later
> on also with Owlim.  Having written all kinds of test programs with
> Lucene, from doing almost nothing to fully fletched indexing, I can
> make no definite conclusions yet.
> 
> I am now circling around the problem, trying to enclose it from
> different sides and I seek your help for giving me hints on what to
> look for.  It is not lightly that I decided to bring it into this
> mailing-list, knowing that it would claim many peoples time.
> 
> Now the test I am running is attached.  It indexes a very simple
> document with a unique id each, first assuring is it deleted.  And
> each loop, it reopens the index-reader and searcher.  This test starts
> to get in trouble above 10,000,000 loops (documents).  The problem is
> that when I remove code (I tested systematically), it only takes
> longer for the heap to explode. The only test that ran properly was
> when I only created Documents and not index them.  So perhaps it has
> to do something with I/O.

Just as a clue: there are thousands of unclosed FileInputStreams and
FileDescriptors.  At a mad guess, someone is not closing their files but
hoping that finalization will do it instead.

I was using:

	gnu::gcj::util::GCInfo::enumerate(JvNewStringUTF("LuceneDump"));

and

 /usr/local/bin/gc-analyze  TestDump001

Eventually, I get a

Exception in thread "main" java.lang.IndexOutOfBoundsException
   at java.nio.Buffer.checkIndex(Buffer.java:331)

from gc-analyze.  I may be able to find out what is causing that.

Andrew.



More information about the Java mailing list