JVM学习系列学习五

凯哥java 凯哥java
我们接着上一篇文章讲解: 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学习系列》中的第三篇文章。如果想系统的学习,建议从本教程第一篇开始看。

下节预告: