GC leaks debugging

David Daney ddaney@caviumnetworks.com
Wed Apr 6 18:39:00 GMT 2011


On 04/06/2011 11:33 AM, Andrew Haley wrote:
> 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.
>

:-(

Sorry about that.  It shouldn't crash, but unfortunately I don't have 
the time to fix it right now.

David Daney.



More information about the Java mailing list