Java21对虚拟线程进行http压测使用不同的GC(JDK21下:G1 vs ZGC vs 分代ZGC 垃圾回收性能对比)
获取Java21所有启动参数及默认值
各版本获取启动参数命令:
java -XX:+PrintFlagsFinal -version > jvm_flags.txt
Java21对虚拟线程进行http压测使用不同的GC
JDK21默认GC是G1.
JDK21除了G1外,还可以使用ZGC(Java11预览、Java15正式版),Java21在ZGC基础上继续推出了分代ZGC,目前还是试行阶段。
开启ZGC:
java -XX:+UseZGC -jar myapp.jar
开启ZGC,并试用分代ZGC:
java -XX:+UseZGC -XX:+ZGenerational -jar myapp.jar
以下的对一个启用tomcat虚拟线程的spring boot 项目分别以默认GC/ZGC/分代ZGC进行高并发测试,测试过程中,对该app占用操作系统的物理内存进行统计,然后形成统计折线图:
三种GC下的压测对并发性能几乎无差别的情况下,三者的内存表现大为不同,特别是G1与两个ZGC的差异尤为明显。
虽然本次比较测试的场景比较单一,但大致能看出ZGC的垃圾回收效率比G1高。
ZGC在垃圾回收的优势主要是:
- 低卡顿: 最大暂停时间不超过10 ms
- 高吞吐: 短时间可以回收大量内存
- 大堆内存支持:对于大规模的应用程序,ZGC 的能力非常有价值,可以降低碎片化的影响。
- 分区化处理:对不同大小的内存进行分区化处理,可以加快小内存回收
同一个spring boot 应用,不同JDK下的内存表现
各版本JDK垃圾回收器回收效率对比
本文来自 漠孤烟
版权声明:
小编:牛A与牛C之间
链接:https://www.wuleba.com/2836.html
来源:吾乐吧软件站
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
下载说明:请不要相信网盘那边的广告,不要下载APP,普通下载就完事了!
共有 0 条评论