JVM学习系列学习五

我们接着上一篇文章讲解:

4.2:查看内存中对象数量及大小

查看所有对象,包括活跃及非活跃的。使用命令:

Jmap -histo | more

查看活跃对象:

Jmap -histo:live | 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

示例:

Cd到home。查看刚才dump的文件:

4.4:通过jhat对dump文件进行分析

刚才我们将JVM内存dump到了文件中,这个文件就是一个二进制文件。不方便查看,这时候,我们可以借助与其他工具进行查看。

可以使用jhat这个命令进行分析查看。

语法:

jhat -port

示例

查看分析后的数据:

我们可以通过浏览器+端口访问分析后的数据。

使用OQL查询:

在最后面,我们可以看到有个OQL查询功能:

OQL:Object Query Languagen

假设我们现在要查询字符串长度大于10000的内容:

OQL语句:select s from java.lang.String s where s.value.length >=10000

执行结果:

本文是《JVM学习系列》中的第三篇文章。如果想系统的学习,建议从本教程第一篇开始看。

下节预告:

本文来源:http://www.kaigejava.com/article/detail/465

凯哥个人博客:www.kaigejava.com

凯哥公众号:凯哥Java(kaigejava)

你可能感兴趣的:(JVM学习系列学习五)