lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alon Muchnick <a...@datonics.com>
Subject potential memory leak when using RAMDirectory ,CloseableThreadLocal and a thread pool .
Date Wed, 02 Jan 2013 13:26:22 GMT
Hello All ,
we are using Lucune 3.6.2 in our web application on tomcat 5.5 and recently
we started testing our application on tomcat 7, unfortunately we seem to
encounter a memory link in Lucune's  CloseableThreadLocal class , any help
with solving the below issue would be much appreciated.


we are using RAMDirectory for our Indexes , while testing the application
on tomcat 7 we noticed that there is a memory leak in our application ,
after taking a heap dump we can see the memory leak is in the:



Type |Name                |Value
------------------------------------------------------------
ref |   index                   |  org.apache.lucene.store.RAMDirectory --->
------------------------------------------------------------

------------------------------------------------------------------------
ref |   core                    |
org.apache.lucene.index.SegmentReader$CoreReaders   --->
------------------------------------------------------------------------

--------------------------------------------------------------
ref |   tis                       |
org.apache.lucene.index.TermInfosReader  --->
--------------------------------------------------------------


-----------------------------------------------------------------------------
ref |   threadResources   |  org.apache.lucene.util.CloseableThreadLocal
--->
-----------------------------------------------------------------------------


--------------------------------------------
ref  |   hardRefs              |  java.util.HashMap @ 0x9d566938
--------------------------------------------

i guess the HashMap is used for caching purposes and it hold entries where
the key is a thread name and the value is a
org.apache.lucene.index.TermInfosReader$ThreadResources object .

*even when i stop new incoming connection to the application , tomcat
closes all the active threads and a GC is run the above map size is not
reduced and GC cannot reclaim the heap space .
*
the problem looks  some what similar to LUCENE-3841
https://issues.apache.org/jira/browse/LUCENE-3841
but we are no using SnowballAnalyzer .

( i checked the code and made sure the hardRefs map is a WeakHashMap )


our JVM is :

OpenJDK 64-Bit Server VM ,
java.runtime.version1.6.0_20-b20


one again any help would be much appreciated.

thanks

Alon

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message