Java 25 的 Minecraft 跑分大比拼
$Id: minecraft_java25_benchmark.org,v 26.6 2026/07/05 17:35:36 dongdigua Exp $
1. Why
之前看到这篇[简要横评] 我的世界 15 个 JDK 千万行数据 大型测评项目的 jdk 横评,当时是跑在 java 17LTS 和 20
得出的几个重要结论:
- OpenJDK 发行版之间差异不大
- Zing 和 GraalVM EE 性能最强,OpenJ9 最拉
- G1GC 最快
现在的 LTS 是 java 25,本次 benchmark,我希望回答几个问题:
- ZGC 和 shenandoah 会不会有提升,能否接近甚至超过 G1GC?
- glibc 和 musl 是否有明显区别?(这是那篇文章忽略掉的一点)
- GraalVM 的性能提升是否依旧明显?
2. How
2.1. 测试环境
树莓派 5 Rev 1.1 8G + NVME SSD (ZFS) + Alpine Linux
不开 Minecraft 时 load avg 在 0.01 以下
2.2. Minecraft 设置
26.2 原版服务端
默认 server.properties 的基础上只改了视距和模拟距离为 12(默认是 10 不够加载 17x17)
17x17 区块的 无沟世吞 V4.2 空炸(无凋落物),每次使用同一存档备份,跑一个来回 (V1) / 30min (V2)
(其实我最初的想法就是:在树莓派 5 上能否极致压榨性能使得炸标准空置域不掉刻)
2.3. Java 参数
使用最简参数
#!/bin/sh JFR="-XX:StartFlightRecording=filename=bench/bench.jfr,settings=mcbench.jfc,dumponexit=true" # V2 java -XX:+UseG1GC -Xms4G -Xmx4G -XX:+AlwaysPreTouch $JFR -jar server.jar #java -XX:+UseZGC -Xms4G -Xmx4G -XX:+AlwaysPreTouch $JFR -jar server.jar #java -XX:+UseShenandoahGC -Xms4G -Xmx4G -XX:+AlwaysPreTouch $JFR -jar server.jar
2.4. Java 版本
- azul/zulu-openjdk:25-jre
- azul/zulu-openjdk-alpine:25-jre
- container-registry.oracle.com/graalvm/jdk:25
3. Result
3.1. V1: 世吞跑一个来回,原版 /jfr 采样
gc 没放出来因为原版的 /jfr 会因 Heap Inspection Initiated GC 触发 Full GC)


3.2. V2: 世吞跑 30 min,精简 jfr 采样



4. Conclusion & Analysis
- G1GC 依旧最快,停顿时间也可接受,更多情况下网络波动要比 gc 的延时更明显
- 令我有些惊讶的是,musl 比 glibc 略快,
AI 猜测:glibc malloc 的 per-thread arena 对单线程密集计算的 MC 是负优化,musl 朴素的极简 malloc 反而更快。 - GraalVM 依旧长期最快,但是 JIT 预热卡顿尖峰大