 <p>Using following methods you could identify how GC behaves on weak references. Option 1:</p> <p>-verbose:gc </p> <p>This argument record GC behaviour whenever GC kicks into picture. You could take the log file when you want to check did GC gets into action, It could be checked from the GC logs. For Interactive GC analysis try the log with <a href="http://www.ibm.com/developerworks/java/jdk/tools/gcmv/" rel="nofollow">http://www.ibm.com/developerworks/java/jdk/tools/gcmv/</a> </p> <p>Option 2 :</p> <p>Collect Heap dump and user event and load it in <a href="https://www.ibm.com/developerworks/java/jdk/tools/memoryanalyzer/" rel="nofollow">https://www.ibm.com/developerworks/java/jdk/tools/memoryanalyzer/</a></p> <p>Write OQL(Object Query language) on OQL section select * from package(s).classname and click on ! on the tool bar It will give list of objects of that type Right click on the objects -> Path to GC roots -> Exclude soft/weak/Phantom references If suspect object does not have any strong reference then it will show NULL else you will get information on who is holding the strong references on the suspected object.</p>