I have an application that crashed with an OutOfMemory. I loaded the phd file from the crash into Eclipse Memory Analyzer. I promptly identified a rather suspicious ArrayList with about 5,700,000 entries, each being a String with the content of 16 null bytes(????). Note: I didn't check all entries but inspected a somewhat smaller sample.
Unsurprisingly I'm interested who is holding on to such a stupid thing, so I right clicked on the ArrayList and opened the 'Path to GC Roots' (with all references or with some exclusion, it doesn't seem to make a difference).
A new tab opens and displays only a single row, the ArrayList, with the suffix 'Unknown' appended.
So my question is in the title: Why can't I see GC roots?
Various Versions of stuff involved.
Application is running on Websphere 8.x on some 1.6 IBM JRE
Eclipse Memory Analyzer: Version 1.5.0
Diagnostic Tool Framework for Java (for loading the IBM dumps): 1.10.0.201211161052