Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jmap - Does histo & heap operation bring overhead to jvm?

Tags:

java

jvm

jmap

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?

like image 279
user218867 Avatar asked Mar 10 '23 03:03

user218867


1 Answers

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.

like image 85
apangin Avatar answered Mar 12 '23 16:03

apangin