11、摸清JVM对象分布

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

Jmap –heap PID:

这个命令可以打印一个堆的摘要信息,包括使用的GC算法、堆配置信息、各个内存区域的使用信息等:

11、摸清JVM对象分布_第1张图片

Jmap –histo PID:

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

11、摸清JVM对象分布_第2张图片

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端口,便可以图形化地来分析堆内存的对象分布情况。

你可能感兴趣的:(JVM,jvm,java,linux)