JVM学习系列学习五

点点圈 提交于 2021-01-10 08:44:09

JVM学习系列学习五

凯哥java 凯哥java
我们接着上一篇文章讲解:
4.2:查看内存中对象数量及大小
查看所有对象,包括活跃及非活跃的。使用命令:



Jmap -histo <pid> | more

查看活跃对象:
Jmap -histo:live <pid> | more
JVM学习系列学习五
对象说明:
B: byte
C: char
D: double
F: float
I: int
J: long
z: Boolean









[L+类名:其他对象
4.3:将内存使用情况dump到文件中
在有些时候,我们需要将JVM当前内存中的情况进行分析。这个时候,我们就需要先将内存中数据放到文件中。
Jmap也支持dump。
用法:
jmap -dump:format=b,file=/home/dump.data 20031
Jmap -dump:format=b,file=dumpFileName<pid>
示例:
JVM学习系列学习五
Cd到home。查看刚才dump的文件:
JVM学习系列学习五
4.4:通过jhat对dump文件进行分析
刚才我们将JVM内存dump到了文件中,这个文件就是一个二进制文件。不方便查看,这时候,我们可以借助与其他工具进行查看。
可以使用jhat这个命令进行分析查看。
语法:
jhat -port <port> <file>
示例
JVM学习系列学习五
查看分析后的数据:
我们可以通过浏览器+端口访问分析后的数据。
JVM学习系列学习五
使用OQL查询:
在最后面,我们可以看到有个OQL查询功能:
JVM学习系列学习五
OQL:Object Query Languagen
假设我们现在要查询字符串长度大于10000的内容:
OQL语句:select s from java.lang.String s where s.value.length >=10000
执行结果:
JVM学习系列学习五
本文是《JVM学习系列》中的第三篇文章。如果想系统的学习,建议从本教程第一篇开始看。




























下节预告:

JVM学习系列学习五

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!