jmap - histo&堆操作给jvm带来了开销?

时间:2017-01-19 07:59:25

标签: java jvm jmap

正如标题所述,jmap -histojmap -heap分别为jvm带来了多少开销?

如果内存敏感的Java进程位于OutOfMemory的边缘(例如,大约96%的堆已满,并且无法通过完整gc清除),是否可能进行其中一个操作将jvm带到OutOfMemory?

1 个答案:

答案 0 :(得分:3)

jmap -histojmap -heap的工作方式不同:jmap -histo使用动态附加机制,jmap -heap通过HotSpot Serviceability Agent工作。区别在于here

因此,jmap -histo由JVM本身执行,但{J}进程暂停时,jmap -heap在工具进程中运行。在这两种情况下都不会创建新的Java对象,该工具不会导致OutOfMemoryError

在这两种情况下,应用程序线程都会停止:jmap -histo停止Java线程,jmap -heap停止整个JVM进程。暂停的持续时间可能相当长,特别是对于大堆。例如。步行4GB堆可能需要几秒钟。