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占用操作系统的物理内存进行统计,然后形成统计折线图:

Java21对虚拟线程进行http压测使用不同的GC(JDK21下:G1 vs ZGC vs 分代ZGC 垃圾回收性能对比)插图

三种GC下的压测对并发性能几乎无差别的情况下,三者的内存表现大为不同,特别是G1与两个ZGC的差异尤为明显。
虽然本次比较测试的场景比较单一,但大致能看出ZGC的垃圾回收效率比G1高。
ZGC在垃圾回收的优势主要是:

  • 低卡顿: 最大暂停时间不超过10 ms
  • 高吞吐: 短时间可以回收大量内存
  • 大堆内存支持:对于大规模的应用程序,ZGC 的能力非常有价值,可以降低碎片化的影响。
  • 分区化处理:对不同大小的内存进行分区化处理,可以加快小内存回收

同一个spring boot 应用,不同JDK下的内存表现

各版本JDK垃圾回收器回收效率对比

Java21对虚拟线程进行http压测使用不同的GC(JDK21下:G1 vs ZGC vs 分代ZGC 垃圾回收性能对比)插图1

本文来自 漠孤烟

版权声明:

小编:吾乐吧软件站

链接:https://www.wuleba.com/2836.html

来源:吾乐吧软件站

本资源仅供个人学习,禁止用于商业用途。下载后请于24小时内删除,并支持正版或原作者。因使用本资源导致的任何法律纠纷或损失,由使用者自行承担。

THE END
上一篇 焕新归来!吾乐吧从传统博客变身微博社区,发现好软件,分享真快乐
下一篇 焕新归来!吾乐吧从传统博客变身微博社区,发现好软件,分享真快乐
相关内容
0
0
0

请先 登录 后转发

全部转发 0 只看作者
按时间倒序 按时间正序

全部评论 0 只看作者
按时间倒序 按时间正序
暂无评论,快来抢沙发吧
赞赏支持
微信收款码
微信扫一扫
支付宝收款码
支付宝扫一扫
投诉内容
0/200
上传图片(最多3张,单张不超过2MB)