JVM学习系列学习四

  • 作者: 凯哥Java(公众号:凯哥Java)
  • JVM学习系列
  • 时间:2019-06-30 20:57
  • 3530人已阅读
简介 使用命令查看对内存使用情况使用到的命令:jstatJstat:此命令可以查看对内存各个部分的使用量,以及加载类的数据。命令格式:Jstat[-命令选项][vmid][间隔时间/毫秒][查询次数]实例1:查看class加载统计1.1:使用jps命令查看java程序的PID:命令:jps说明:Bootstrap就是Java运行程序的PID1.2:使用jstat -class Jav

🔔🔔好消息!好消息!🔔🔔

 如果您需要注册ChatGPT,想要升级ChatGPT4。凯哥可以代注册ChatGPT账号代升级ChatGPT4

有需要的朋友👉:微信号 kaigejava2022

我们接着上一篇讲解:

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

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

下节预告:

0f6c917e7484896b6f869d22531d778c.png


TopTop