找回密码
 初始化身份识别芯片
查看: 346|回复: 1

关于在不同GC下的性能评估

[复制链接]

巡洋大副

发表于 2024-9-20 17:55:14 | 显示全部楼层 |阅读模式
事先声明,这个测试只是简单测试不同GC下的远行星号加载速度,即只考虑了打开游戏的加载时间
修改的文件为:vmparams
基本概念:

Serial GC:
-XX:+UseSerialGC
这是最简单的垃圾收集器,适用于单处理器机器,或者小型应用。
Parallel GC(也称为Throughput Collector):
-XX:+UseParallelGC
适用于多处理器机器,旨在提高吞吐量。
Concurrent Mark Sweep (CMS) GC:
-XX:+UseConcMarkSweepGC
这种收集器试图最小化停顿时间,适用于需要低延迟的应用。
G1 GC(默认GC方法):
-XX:+UseG1GC
适用于大堆内存,旨在提供可预测的停顿时间。

测试环境为:
java8
mod:
看图片,太多了
针对以上的GC方法测试:(别问为什么没有Shenandoah GC,问就是不支持高java)

+UseConcMarkSweepGC:1分04秒
+UseG1GC:1分27秒
+UseSerialGC:1分14秒
+UseParallelGC:1分钟
由此可得,使用UseParallelGC方法在加载页面加载最快

全测试终




mod1

mod1

mod2

mod2

mod3

mod3

战列舰长

发表于 2024-9-21 12:37:47 | 显示全部楼层
这个测试对于调优实际游戏体验没有太大帮助。为游戏加载时间优化就相当于为吞吐优化,这个可以不考虑GC的停顿时长,所以用为吞吐优化的GC自然会快。然而实际游戏过程中GC的停顿更加影响体验,所以才需要用G1这样的为停顿时间优化的GC。
GC的高吞吐和低停顿时间不可兼得。吞吐高了停顿时间就长,停顿时间短吞吐就稀烂。现代的无暂停GC(包括ZGC,Shenadoah GC)的低停顿时长都是牺牲吞吐换来的。

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2024-11-23 15:56

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio

快速回复 返回顶部 返回列表