How long does it take to calculate saved sizes in a visual virtual machine for a 1 GB heap?

I have a 1 GB heap dump from a Java process that ended up from a heap. I loaded the bunch into jvisualm which comes with the java6 distribution. I started the “calculate saved dimensions” process about 16 hours ago and it still works. How long does it take to calculate saved sizes for the top 20 objects on a 1 GB heap? Should I expect it to ever end?

+8
java heap memory visualvm
source share
2 answers

It seems that on my machine too forever, but I noticed from the task manager that nothing else is happening (low uage processor, Disk I / O). The reason was that while the progress bar continued to show animation, the action was silently undone according to the log file.

To open the log, I used the following steps:

  • Click Help
  • Click on
  • Click "Logfile"

This showed me at the bottom of the log:

SEVERE [org.openide.util.RequestProcessor] java.lang.OutOfMemoryError: GC overhead limit exceeded at java.util.HashMap.newNode(HashMap.java:1734) at java.util.HashMap.putVal(HashMap.java:630) at java.util.HashMap.put(HashMap.java:611) at java.util.HashSet.add(HashSet.java:219) at org.netbeans.lib.profiler.heap.DominatorTree.intersect(DominatorTree.java:279) at org.netbeans.lib.profiler.heap.DominatorTree.computeOneLevel(DominatorTree.java:114) at org.netbeans.lib.profiler.heap.DominatorTree.computeDominators(DominatorTree.java:64) at org.netbeans.lib.profiler.heap.HprofHeap.computeRetainedSize(HprofHeap.java:537) at org.netbeans.lib.profiler.heap.HprofHeap.computeRetainedSizeByClass(HprofHeap.java:594) at org.netbeans.lib.profiler.heap.ClassDump.getRetainedSizeByClass(ClassDump.java:102) at org.netbeans.modules.profiler.heapwalk.HeapFragmentWalker.computeRetainedSizes(HeapFragmentWalker.java:100) at org.netbeans.modules.profiler.heapwalk.ClassPresenterPanel$1$1.run(ClassPresenterPanel.java:187) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1393) [catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2003) 

By default, my 64-bit Java VM Heapsize will be limited to 25% of my computer memory (or even the much lower VisualVM built-in limit). To solve this problem for my next attempt, I will try to start VisualVM again as follows:

 jvisualvm.exe -J-Xmx16g 

After that, the log appears at startup:

 Heap memory usage: initial 24,0MB maximum 14563,6MB 
+4
source share

I had a 600 MB heap that took 900 CPU minutes to compute the saved sizes. It is 15 hours. I would suggest that this has a lot to do with what's on the heap, so I won’t extrapolate your heap (also you indicated that it didn’t end;), but this is another data point.

+1
source share

All Articles