JVM系列之常用命令(上)之jstat查看jvm内存

前言

不少初级java程序员,使用过的java命令就那么几个。

  1. 使用java -version查看java版本
  2. 使用java -jar启动springboot程序
  3. 使用jps查询进程
    在真实的环境,往往会遇到一些JVM内存和CPU问题,对于这种问题,很多处理方式就是重启服务器,但是过一段时间有出现JVM占用过多的资源,导致程序响应超时,甚至OOM直接进程无法恢复正常使用。

查看java版本

java -version

在这里插入图片描述

编译java文件

先写一个简单的java文件Demo.java

import java.time.LocalDateTime;

public class Demo {
    public static void main(String[] args) {
        new Thread(() -> {
            while (true) {
                System.out.println(LocalDateTime.now());
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

然后使用javac命令执行

javac Demo.java

编译完成后就会多出来一个Demo.class的二进制文件
在这里插入图片描述

运行class文件

  1. 运行class文件时,注意不要加.class后缀。
  2. 由于这里运行一个独立class文件,没有依赖其他的jar包,否则需要加入-cp或者-classpath来引入依赖的jar包。
  3. 运行命令里,我加入里一些jvm的参数-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError,为了文章后面的内容做准备。
java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError Demo

在这里插入图片描述
这里把我当前的时间打印出来了。

查询java进程

  1. jps命令可以查询所有java进程,返回了pid(进程id)、进程名称和启动参数
  2. -l 可以显示进程全名
  3. -v 可以查看进程的启动参数
jps -lv

在这里插入图片描述
这里可以看到里面有两个java进程,一个是jps命令对应的进程,另一个是刚才运行的java进程。显示的列表有进程号、进程名称和启动参数。
如果使用idea运行的情况下,可以看到更多的java进程,包括idea的java进程。idea运行时和启动我们的java项目时,会加入很多的jvm参数。
在这里插入图片描述

jstat

命令和结果

jstat -gc 3634 1s 10

在这里插入图片描述

  1. -gc 是查看jvm的各个区间的内存消耗值和gc触发次数
  2. 3634是刚才使用jps查看到的demo程序的进程号
  3. 1s 10表示间隔1秒,一共打印10次
  4. 这里的内存的单位是KB

JVM内存模型

在这里插入图片描述

堆内存 = 年轻代(Young) + 年老代(Old) + 元空间(Metaspace)
年轻代 = Eden区 +Survivor1 +Survivor2

命令返回的列表中,各个列的含义

S0C、S1C、S0U、S1U:Survivor 0/1区分配的最大容量(Capacity)和使用量(Used)
EC、EU:Eden区分配的最大容量和使用量
OC、OU:年老代(Old)分配的最大容量和使用量
MC、MU:元空间(Metaspace)分配的最大容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时

-gcutil可以查看使用率

jstat -gcutil 3634 1s 10

在这里插入图片描述
S0、S1:Survivor 0/1区使用率/百分比
E:Eden区使用率/百分比
O:年老代使用率/百分比
PC、PU:永久代分配的最大容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时

显示jstat所有可以使用的选项

列出所有可以使用的jstat选项

jstat -options

在这里插入图片描述
想知道它们的具体含义使用man命令就可以查看,这里就需要一定的英文能力了

man jstat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其它的都差不多,就不全部贴出来了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值