跳转到内容

Semeru

Semeru 是由 IBM 提供的 JDK 发行版,使用 OpenJ9 JVM 而非 HotSpot JVM。

OpenJ9 是一套遵循 Java 虚拟机规范、独立实现并重新设计的 JVM,拥有独立的内存管理机制和垃圾收集策略,和 HotSpot JVM 内的 G1GC、ZGC 不同。

如需在 Paper 及其分支上使用 Semeru,你需要禁用内置 Spark:

方法一:关闭内置 Spark(推荐)

Section titled “方法一:关闭内置 Spark(推荐)”

config/paper-global.yml 中设置:

spark:
enabled: false

添加 JVM 启动参数:

-Dpaper.preferSparkPlugin=true

使核心优先选择 Spark 插件,而非内置的版本。

-XX:+IdleTuningGcOnIdle -XX:+UseAggressiveHeapShrink -XX:-OmitStackTraceInFastThrow -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -Xshareclasses:allowClasspaths -Xshareclasses:cacheDir=./cache -Xaot -XX:+UseCompressedOops -XX:ObjectAlignmentInBytes=256 -Xshareclasses -XX:SharedCacheHardLimit=800M -Xtune:virtualized -XX:+TieredCompilation -XX:InitialTenuringThreshold=5 -Dlog4j2.formatMsgNoLookups=true -XX:-DisableExplicitGC

OpenJ9 使用 -Xgcpolicy 参数来指定垃圾回收策略,而不是 HotSpot 的 -XX:+UseG1GC-XX:+UseZGC

适合大多数 Minecraft 服务器场景,特别是有大量短生命周期对象的事务性应用。

-Xgcpolicy:gencon
其他可选策略

适合大堆内存(仅 64 位),能够平衡暂停时间并减少碎片化。

-Xgcpolicy:balanced

优化平均暂停时间,适合对延迟敏感的应用。

-Xgcpolicy:optavgpause

优化吞吐量,适合能容忍较长 GC 暂停的应用。

-Xgcpolicy:optthruput

提供确定性的短暂停时间(仅 Linux x86-64 和 AIX)。

-Xgcpolicy:metronome