JVM学习系列学习五

作者: 凯哥Java | 来源:发表于2019-07-03 09:26 被阅读2次

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

    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学习系列》中的第三篇文章。如果想系统的学习,建议从本教程第一篇开始看。

    下节预告:

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

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

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

    相关文章

      网友评论

        本文标题:JVM学习系列学习五

        本文链接:https://www.haomeiwen.com/subject/spmfhctx.html