JVM|11、摸清JVM对象分布

【JVM|11、摸清JVM对象分布】Jstat可以了解到JVM的运行状况,而jstat –gc更是可以摸清JVM GC相关状况。而jmap、jhat搭配使用,可以帮助我们观察JVM中的对象分布。

Jmap –heap PID:
这个命令可以打印一个堆的摘要信息,包括使用的GC算法、堆配置信息、各个内存区域的使用信息等:
JVM|11、摸清JVM对象分布
文章图片


Jmap –histo PID:
会按照各种对象占用内存空间的大小进行降序排列,把占用内存最多的对象放在最上面。所以如果只是想简单了解一下当前jvm中的对象对内存占用的情况,只要直接使用jmap –histo命令即可,可以快速了解到当前内存里到底哪个对象占用了大量的内存空间。
JVM|11、摸清JVM对象分布
文章图片



Jmap –dump:live,format=b,file=dump.hprof PID:
这个命令会在当前目录下生成一个dump.hprof文件,这是一个二进制的格式,不能直接打开看,他把这一时刻JVM堆内存里所有对象的快照放到文件里去了,以供后续分析。

Jhat –port 7000 dump.hprof:
Dump.hprof即是上面hmap导出的文件,使用jhat可以对这一文件进行分析。Jhat内置了web服务器,支持通过浏览器以图形化的方式分析堆转储快照,这里指定的http端口号是7000端口,只要用浏览器访问这台机器所在的7000端口,便可以图形化地来分析堆内存的对象分布情况。


    推荐阅读