JVM学习系列学习四

作者: 凯哥Java | 来源:发表于2019-07-02 09:18 被阅读1次

    我们接着上一篇讲解:

    使用命令查看对内存使用情况

    使用到的命令:jstat

    Jstat:此命令可以查看对内存各个部分的使用量,以及加载类的数据。

    命令格式:

    Jstat[-命令选项][vmid][间隔时间/毫秒][查询次数]

    实例

    1:查看class加载统计

    1.1:使用jps命令查看java程序的PID:

    命令:jps

    说明:Bootstrap就是Java运行程序的PID

    1.2:使用jstat -class JavaPID 命令查看:

    如上图我们查出来的是:10662。所以命令:

    Jstat -class  10662

    说明:

    Loaded:加载的class的数量 11010

    Bytest:所占用空间的大小    21662.8

    Unloaded:未加载数量    329

    Bytest:未加载占用空间        513.6

    Time:时间                21.82

    1.3:查看编译统计

    使用命令:jstat -compiler PID

    说明:

        Compiled:编译数量

        Failed:失败数量

        Invalid:不可用数量

        Time:时间

        FailedType:失败类型

        FailedMethod:失败的方法

    1.4:垃圾回收统计

    命令:jstat -gc PID

    此命令也可以指定打印的间隔和次数。

    如我们想要每秒打印一次,共打印5次。命令:

    Jstat -gc pid 1000 5

    JDK1.7下的:

    JDK1.8下的:

    是否发现1.7与1.8还是由区别的。

    说明:

    S0C:第一个Survivor区的大小(KB)

    S1C:第二个Survivor区的大小(KB)

    S0U:第一个Survivor区的使用大小(KB)

    S1U:第二个Survivor区的使用大小(KB)

    EC:Eden区的大小(KB)

    EU:Eden区的使用大小(KB)

    OC:Old区大小(KB)

    OU:Old使用大小(KB)

    MC:方法区大小(KB)

    MU:方法区使用大小(KB)

    CCSC:压缩类空间大小(KB)

    CCSU:压缩类空间使用大小(KB)

    YGC:年轻代垃圾回收次数

    YGCT:年轻代垃圾回收消耗时间

    FGC:老年代垃圾回收次数

    FGCT:老年代垃圾回收消耗时间

    GCT:垃圾回收消耗总时间

    4Jmap的使用及内存溢出分析

    4.1:查看内存使用情况

    使用命令:jmap -heap PID

    说明:从上图中,我们可以清晰的看出1.8堆内存模型的两个区域

    在来看看JDK1.7的:

    是不是发现多了Perm区。

    从这里我们也能看出JDK1.7与JDK1.8的区别。

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

    下节预告:

    本文来源:www.kaigejava.com

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

    相关文章

      网友评论

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

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