10、摸清JVM运行状况

本文介绍了如何利用jstat命令监控Java进程的内存和垃圾收集情况,包括新生代对象增长速率、YoungGC和FullGC的频率与耗时等关键指标。通过对这些信息的分析,可以优化JVM内存分配,减少FullGC,提升系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要摸清JVM的运行状况,最有用的方式之一,就是使用jstat命令。

首先通过jps可以找到你想要的java进程对应的PID,然后执行jstat –gc PID,就可以看到这个Java进程(其实本质是一个JVM)的内存和GC情况了:

运行jstat –gc PID之后,会看到如下列,给大家解释一下:

S0C:这是From Survivor区的大小

S1C:这是To Survivor区的大小

S0U:这是From Survivor区当前使用的内存大小

S1U:这是To Survivor区当前使用的内存大小

EC:这是Eden区的大小

EU:这是Eden区当前使用的内存大小

OC:这是老年代的大小

OU:这是老年代当前使用的内存大小

MC:这是方法区(永久代、元数据区)的大小

MU:这是方法区(永久代、元数据区)的当前使用的内存大小

YGC:这是系统迄今为止的Young GC次数

YGCT:这是系统迄今为止的Young GC的总耗时

FGC:这是系统迄今为止的Full GC次数

FGCT:这是系统迄今为止的Full GC的总耗时

GCT:这是所有GC的总耗时

而且通过jstat –gc PID 1000 10,可以每隔1秒钟更新出来最新的一行的jstat统计信息,一共执行10次:

通过jstat命令我们主要要获取的信息是:新生代对象增长速率,Young GC的触发频率,Young GC的耗时,每次Young GC之后有多少对象是存活下来的,老年代对象的增长速率,Full GC的触发频率,Full GC的耗时。

然后我们根据这些信息,合理分配内存空间,尽可能让对象留在年轻代不进入老年代,避免发生频繁Full GC。这就是对JVM最好的性能优化。

1、新生代对象增长速率:

比如通过jstat –gc PID 1000 10命令,每隔1秒钟更新一次jstat统计信息,比如第一秒显示出来Eden区占用了250M,第二秒显示Eden区占用了255M,第三秒显示Eden区占用了259M,那么就可以大致估算出来Eden区的对象增长速率为:每1秒增长5M。

2、Young GC的触发频率和每次耗时:

还是上面那个例子,比如Eden区总大小为1G,如果每秒新增5M,那么大概200s,也就是说3分20秒就会进行一次Young GC。每次Young GC耗时则可以根据系统迄今为止运行的Young GC次数,以及系统迄今为止Young GC总耗时,计算出来每次Young GC的耗时。

3、每次Young GC后有多少对象是存活和进入老年代:

需要通过监控到多次Young GC,Young GC之后有多少对象放入了Survivor区,老年代又新增了多少对象,来得到老年代对象的增长速率。

4、Full GC的触发频率和耗时:

一旦知道了老年代的增长速率,那么只需要知道老年代的总大小,就可以轻松推测出来Full GC的触发频率。每次Full GC耗时则可以根据系统迄今为止运行的Full GC次数,以及系统迄今为止Full GC总耗时,计算出来每次Full GC的耗时。

1、JVM是如何工作的?_jerry_dyy的博客-优快云博客_jvm是如何运行的

2、JVM的类加载机制_jerry_dyy的博客-优快云博客

3、JVM内存区域划分_jerry_dyy的博客-优快云博客_jvm的内存区域划分

4、JVM垃圾回收机制_jerry_dyy的博客-优快云博客

5、JVM分代模型--新生代 的垃圾回收_jerry_dyy的博客-优快云博客_jvm新生代划分

6、JVM分代模型--老年代 的垃圾回收_jerry_dyy的博客-优快云博客

7、常见的垃圾回收器_jerry_dyy的博客-优快云博客

8、JVM优化简介_jerry_dyy的博客-优快云博客

9、学会查看GC日志_jerry_dyy的博客-优快云博客

10、摸清JVM运行状况_jerry_dyy的博客-优快云博客

11、摸清JVM对象分布_jerry_dyy的博客-优快云博客

12、OOM简介_jerry_dyy的博客-优快云博客

13、OOM模拟_jerry_dyy的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值