Objects with "no references" in hprof
I'm investigating an hprof file in VisualVM
The server is running JDK 1.4.2_30 and has 1 GB heap with NewSize of 200 Mb.
The hprof shows 71% of the heap occupied by 56000 instances of int[] and none of these 56K arrays have references when viewed in VisualVM
As per us, this should have been garbage collected if there were "no references". So the questions are:
a) is there any way to find out these references?
b) Is this an incorrect snapshot - ie did the action of taking the heap dump do some sort of GC ?
c) Should we be looking at the "retained sizes" objects in VisualVM?
As an update - we still dont know what these int[] are, but the next largest objects were Weblogic internal EJB references in Pool, and we discovered an incorrect setting in one of those which has brought down memory util to 30% from earlier frequent Full GCs
Disclaimer: guesswork ahead, I don't have a clear answer, but I might be able to give some useful hints.
I've seen a similar situation lately ('though with a much more current Java version).
The reason for the big number of unreferenced int[] seems to have been mapped buffers of some kind (I'm not a NIO expert, but it seems to have been related to this).
The reason for this conclusion is that there was a very similar number of byte[] around with pretty much the same size in memory and those byte[] were referenced by some *Channel instances.
So my guess is (was) that those int[] are actually synthetic instances that actually share their memory with the byte[] (which are properly referenced). In short: they are red herrings.
All of this is a lot of guesswork and I never followed up with it, because the actual problem at that time turned out to be something entirely unrelated.
链接地址: http://www.djcxy.com/p/81424.html上一篇: 与使用的%相比,堆大小意外很大
下一篇: hprof中没有“引用”的对象
