24_模拟频繁 Young GC 案例
1687字约6分钟
2024-08-10
BI 系统背景介绍
商家使用平台产生数据,后台根据数据分析生成报表数据
报表是实时自动刷新的,可能是每隔几秒就刷新一次,几万用户量请求量就挺多的了
系统运行中会不断的分配、销毁对象,发生 Young GC
时会有卡顿
模拟案例
JVM 参数配置
下面这些参数基于 JDK1.8
版本来配置的,忘记怎么设置的可以回看 07_动手实验:系统部署时如何设置JVM内存大小 的内容
//初始新生代大小 最大新生代大小 初始堆内存大小 最大堆内存大小 Eden区占比新生代比例 大对象阈值 新生代垃圾器 ParNew 老年代垃圾器 CMS 打印详细 GC 日志 打印每次发生GC的时间 将GC 日志写入磁盘文件
-XX:NewSize=100M -XX:MaxNewSize=100M -XX:InitialHeapSize=200M -XX:MaxHeapSize=200M -XX:SurvivorRatio=8 -XX:PretenureSizeThreshold=3M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:gc.log
我们这里设置堆内存 200MB
、新生代 100MB
、老年代 100MB
模拟代码
下面模拟的 Java
代码中,我们先停顿 20
秒,方便我们找到对应进程 PID
,然后执行 jstat
命令
loadData()
方法中我们模拟每秒 50
个请求产生 50
个 100KB
大小的数组,然后随着时间不断进行,Eden
区满了发生 Young GC
/**
* @ClassName BIDemo
* @Desciption
* @Author MaRui
* @Date 2024/2/2 16:40
* @Version 1.0
*/
public class BIDemo {
public static void main(String[] args) throws InterruptedException {
TimeUnit.SECONDS.sleep(20);
while (true) {
loadData();
}
}
private static void loadData() throws InterruptedException {
byte[] data = null;
for (int i = 0; i < 50; i++) {
data = new byte[100 * 1024];
}
data = null;
TimeUnit.SECONDS.sleep(1);
}
}
结果分析
启动代码后我们在命令窗口中执行 jps
,找到对应的进程 PID
,这里是 27784 BIDemo
执行 jstat -gc 27784 1000 1000
,每隔一秒统计一次内存信息,总共统计 1000
次
观察打印的统计信息有以下内容:
1、
Eden
区每秒内存增加量为5MB
2、每次
Young GC
耗时1
毫秒3、每次
Young GC
后Survivor
内存使用量为1.6MB
左右4、老年代内存使用量一直为
0
,且没发生过Full GC
通过我们观察得到的信息,虽然 Young GC
频繁,但是系统停顿时间较短,且没有发生 Full GC
,说明系统运行良好,几乎不需要优化了
也就是说,频繁 Young GC
不一定需要优化,还要看频繁 Young GC
是否导致大量对象进入了老年代,造成频繁的 Full GC
,像 Young GC
几十毫秒的停顿是没什么问题的
root@DESKTOP-GQ2O8E7 MINGW64 ~
$ jps
7552 RemoteMavenServer36
11812
26836 RemoteMavenServer
11112
27784 BIDemo
15660 Jps
3788 Launcher
root@DESKTOP-GQ2O8E7 MINGW64 ~
$ jstat -gc 27784 1000 1000
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
10240.0 10240.0 0.0 0.0 81920.0 52837.2 102400.0 0.0 4480.0 769.8 384.0 75.8 0 0.000 0 0.000 0.000
10240.0 10240.0 0.0 0.0 81920.0 57838.0 102400.0 0.0 4480.0 769.8 384.0 75.8 0 0.000 0 0.000 0.000
10240.0 10240.0 0.0 0.0 81920.0 62838.8 102400.0 0.0 4480.0 769.8 384.0 75.8 0 0.000 0 0.000 0.000
10240.0 10240.0 0.0 0.0 81920.0 67839.6 102400.0 0.0 4480.0 769.8 384.0 75.8 0 0.000 0 0.000 0.000
10240.0 10240.0 0.0 0.0 81920.0 72840.4 102400.0 0.0 4480.0 769.8 384.0 75.8 0 0.000 0 0.000 0.000
10240.0 10240.0 0.0 0.0 81920.0 77841.2 102400.0 0.0 4480.0 769.8 384.0 75.8 0 0.000 0 0.000 0.000
10240.0 10240.0 0.0 1628.8 81920.0 1771.5 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 6072.1 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 11072.9 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 16073.7 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 21074.5 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 26075.2 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 31076.0 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 36076.8 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 41077.6 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 46078.4 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 51079.2 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 56079.9 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 61080.7 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 66081.5 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 71082.3 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 76083.1 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 0.0 1628.8 81920.0 81083.8 102400.0 0.0 4864.0 3832.8 512.0 424.2 1 0.001 0 0.000 0.001
10240.0 10240.0 1994.7 0.0 81920.0 5933.7 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 10934.5 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 15935.3 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 20936.0 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 25936.8 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 30937.6 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 35938.4 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 40939.2 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 45940.0 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 50940.7 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 55941.5 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 60942.3 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 65943.1 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 70943.9 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 75944.6 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 1994.7 0.0 81920.0 80945.4 102400.0 0.0 4864.0 3833.8 512.0 424.2 2 0.002 0 0.000 0.002
10240.0 10240.0 0.0 1755.0 81920.0 4198.4 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 9199.1 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 14199.9 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 19200.7 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 24201.5 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 29202.3 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 34203.0 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 39203.8 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 44204.6 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 49205.4 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 54206.2 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 59207.0 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 64207.7 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 69208.5 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 74209.3 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003
10240.0 10240.0 0.0 1755.0 81920.0 79210.1 102400.0 0.0 4864.0 3833.9 512.0 424.2 3 0.003 0 0.000 0.003