As the title states, how much overhead does jmap -histo
and jmap -heap
bring to a jvm respectively?
If a memory sensitive Java process is at the edge of OutOfMemory
(e.g around 96% of heap is full, and can't be cleared by full gc), is it possible for one of the operations to bring the jvm to OutOfMemory?
jmap -histo
and jmap -heap
work differently: jmap -histo
uses Dynamic Attach Mechanism, and jmap -heap
works through HotSpot Serviceability Agent. The difference is described here.
Therefore, jmap -histo
is executed by JVM itself, but jmap -heap
runs in a tool process while JVM process is suspended. In both cases no new Java objects are created, the tool will not cause OutOfMemoryError
.
In both cases application threads are stopped: jmap -histo
stops Java threads, and jmap -heap
stops the whole JVM process. The duration of the pause can be rather long especially for large heaps. E.g. it may take several seconds to walk through 4GB heap.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With