JVM学习系列学习五
- JVM学习系列
- 时间:2019-06-30 20:59
- 3422人已阅读
🔔🔔好消息!好消息!🔔🔔
如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号,代升级ChatGPT4
有需要的朋友👉:微信号
我们接着上一篇文章讲解:
4.2:查看内存中对象数量及大小
查看所有对象,包括活跃及非活跃的。使用命令:
Jmap -histo <pid> | more
查看活跃对象:
Jmap -histo:live <pid> | more
对象说明:
B: byte
C: char
D: double
F: float
I: int
J: long
z: Boolean
[]:数组 如 [I]:表示的是int数组
[L+类名:其他对象
4.3:将内存使用情况dump到文件中
在有些时候,我们需要将JVM当前内存中的情况进行分析。这个时候,我们就需要先将内存中数据放到文件中。
Jmap也支持dump。
用法:
jmap -dump:format=b,file=/home/dump.data 20031
Jmap -dump:format=b,file=dumpFileName<pid>
示例:
Cd到home。查看刚才dump的文件:
4.4:通过jhat对dump文件进行分析
刚才我们将JVM内存dump到了文件中,这个文件就是一个二进制文件。不方便查看,这时候,我们可以借助与其他工具进行查看。
可以使用jhat这个命令进行分析查看。
语法:
jhat -port <port> <file>
示例
查看分析后的数据:
我们可以通过浏览器+端口访问分析后的数据。
使用OQL查询:
在最后面,我们可以看到有个OQL查询功能:
OQL:Object Query Languagen
假设我们现在要查询字符串长度大于10000的内容:
OQL语句:select s from java.lang.String s where s.value.length >=10000
执行结果:
本文是《JVM学习系列》中的第三篇文章。如果想系统的学习,建议从本教程第一篇开始看。
下节预告:
上一篇: JVM学习系列学习四
下一篇: JVM学习系列学习六