From 1cea09886612a621bff4924b1f6ded1e1de4a568 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Fri, 27 Mar 2026 18:04:15 -0400 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/content/docs/java/advance/optimize/jvm/zing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/java/advance/optimize/jvm/zing.md b/src/content/docs/java/advance/optimize/jvm/zing.md index fb5befd5f..a5eb6af0f 100644 --- a/src/content/docs/java/advance/optimize/jvm/zing.md +++ b/src/content/docs/java/advance/optimize/jvm/zing.md @@ -95,4 +95,4 @@ C4 是 Zing 中唯一的垃圾收集器,取代了 OpenJDK 中可用的其他 这些参数未经测试,仅作为标记 - `-XX:+UseSpecialHashSet` 启用对特殊 HashSet 填充模式的优化,当输入集合的元素频繁添加到空 HashSet 时。 -- `-XX:-OptimizeIdentityHashForDistribution` 启用 System.identityHashCode() 的替代实现,以牺份哈希计算速度为代价,提供更好的对象分布 +- `-XX:-OptimizeIdentityHashForDistribution` 启用 `System.identityHashCode()` 的替代实现,以牺份哈希计算速度为代价,提供更好的对象分布 From 1b9d9763cd4cff0ce1d5a401c769d94d8157e597 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Fri, 27 Mar 2026 18:05:16 -0400 Subject: [PATCH 2/5] =?UTF-8?q?=E5=86=8D=E6=AC=A1=E7=BC=A9=E7=9F=AD?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E7=9A=84=20GraalVM=20=E7=89=B9=E6=9C=89=20fl?= =?UTF-8?q?ag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 去除默认启用 GraalVM 优化 flag --- src/content/docs/java/advance/optimize/jvm/graal.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/java/advance/optimize/jvm/graal.md b/src/content/docs/java/advance/optimize/jvm/graal.md index 2560f7908..2de777948 100644 --- a/src/content/docs/java/advance/optimize/jvm/graal.md +++ b/src/content/docs/java/advance/optimize/jvm/graal.md @@ -21,7 +21,7 @@ GraalVM 24 以上应该移除 `-Dgraal.OptWriteMotion=true` 参数,同时将 ` ```txt - -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=20 -XX:G1MixedGCLiveThresholdPercent=90 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:+PerfDisableSharedMem -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:+UseNUMA -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+UseCriticalJavaThreadPriority -XX:AllocatePrefetchStyle=3 -XX:+AlwaysActAsServerClassMachine -XX:+EagerJVMCI -XX:+UseStringDeduplication -XX:+UseFastStosb -XX:+UseNewLongLShift -XX:+UseVectorCmov -XX:+UseXmmI2D -XX:+UseXmmI2F -XX:+AlignVector -XX:+OptimizeFill -XX:+EnableVectorSupport -XX:+UseCharacterCompareIntrinsics -XX:+UseVectorStubs -XX:UseAVX=2 -XX:UseSSE=4 -Dgraal.UsePriorityInlining=true -Dgraal.Vectorization=true -Dgraal.OptDuplication=true -Dgraal.DetectInvertedLoopsAsCounted=true -Dgraal.LoopInversion=true -Dgraal.VectorizeHashes=true -Dgraal.EnterprisePartialUnroll=true -Dgraal.VectorizeSIMD=true -Dgraal.StripMineNonCountedLoops=true -Dgraal.SpeculativeGuardMovement=true -Dgraal.TuneInlinerExploration=1 -Dgraal.LoopRotation=true -Dgraal.OptWriteMotion=true -Dgraal.WriteableCodeCache=true -Dgraal.CompilerConfiguration=enterprise + -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=20 -XX:G1MixedGCLiveThresholdPercent=90 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:+PerfDisableSharedMem -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:+UseNUMA -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+UseCriticalJavaThreadPriority -XX:AllocatePrefetchStyle=3 -XX:+AlwaysActAsServerClassMachine -XX:+EagerJVMCI -XX:+UseStringDeduplication -XX:+UseFastStosb -XX:+UseNewLongLShift -XX:+UseVectorCmov -XX:+UseXmmI2D -XX:+UseXmmI2F -XX:+AlignVector -XX:+OptimizeFill -XX:+EnableVectorSupport -XX:+UseCharacterCompareIntrinsics -XX:+UseVectorStubs -XX:UseAVX=2 -XX:UseSSE=4 -Dgraal.TuneInlinerExploration=1 -Dgraal.LoopRotation=true -Dgraal.OptWriteMotion=true -Dgraal.WriteableCodeCache=true -Dgraal.CompilerConfiguration=enterprise ``` ### ZGC 参数 @@ -33,7 +33,7 @@ GraalVM 24 以上应该移除 `-Dgraal.OptWriteMotion=true` 参数,同时将 ` ::: ```txt --XX:+UseZGC -XX:-ZProactive -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:+PerfDisableSharedMem -XX:+UseNUMA -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+UseCriticalJavaThreadPriority -XX:AllocatePrefetchStyle=3 -XX:+AlwaysActAsServerClassMachine -XX:+EagerJVMCI -XX:+UseStringDeduplication -XX:+UseFastStosb -XX:+UseNewLongLShift -XX:+UseVectorCmov -XX:+UseXmmI2D -XX:+UseXmmI2F -XX:+AlignVector -XX:+OptimizeFill -XX:+EnableVectorSupport -XX:+UseCharacterCompareIntrinsics -XX:+UseVectorStubs -XX:UseAVX=2 -XX:UseSSE=4 -Dgraal.UsePriorityInlining=true -Dgraal.Vectorization=true -Dgraal.DetectInvertedLoopsAsCounted=true -Dgraal.LoopInversion=true -Dgraal.VectorizeHashes=true -Dgraal.EnterprisePartialUnroll=true -Dgraal.VectorizeSIMD=true -Dgraal.TuneInlinerExploration=1 -Dgraal.LoopRotation=true -Dgraal.OptWriteMotion=true -Dgraal.CompilerConfiguration=enterprise +-XX:+UseZGC -XX:-ZProactive -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+ExplicitGCInvokesConcurrent -XX:+AlwaysPreTouch -XX:+PerfDisableSharedMem -XX:+UseNUMA -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+UseCriticalJavaThreadPriority -XX:AllocatePrefetchStyle=3 -XX:+AlwaysActAsServerClassMachine -XX:+EagerJVMCI -XX:+UseStringDeduplication -XX:+UseFastStosb -XX:+UseNewLongLShift -XX:+UseVectorCmov -XX:+UseXmmI2D -XX:+UseXmmI2F -XX:+AlignVector -XX:+OptimizeFill -XX:+EnableVectorSupport -XX:+UseCharacterCompareIntrinsics -XX:+UseVectorStubs -XX:UseAVX=2 -XX:UseSSE=4 -Dgraal.TuneInlinerExploration=1 -Dgraal.LoopRotation=true -Dgraal.CompilerConfiguration=enterprise ``` From 23906c4e9feead79ae921ff796de1488df3726c3 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:01:02 -0400 Subject: [PATCH 3/5] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=8E=92=E5=BA=8F=20JDK?= =?UTF-8?q?=20=E9=80=89=E9=A1=B9=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 现在按照流行程度/推荐程度来排序? Zulu | Graalvm | Dragonwell | Semeru | Zing --- .../docs/java/advance/optimize/jvm/intro.mdx | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/content/docs/java/advance/optimize/jvm/intro.mdx b/src/content/docs/java/advance/optimize/jvm/intro.mdx index 33cfd3b40..a02d16fce 100644 --- a/src/content/docs/java/advance/optimize/jvm/intro.mdx +++ b/src/content/docs/java/advance/optimize/jvm/intro.mdx @@ -55,21 +55,20 @@ GraalVM 在 22.3.0 修复了所有已知的 Minecraft 错误 import { TabItem, Tabs } from "@astrojs/starlight/components"; - - + + -Dragonwell 分为 Standard Edition 和 Extended Edition,推荐下载 Extended Edition +Azul Zulu 支持 Java 8 以上,Java 7 和 6 需要成为客户才能下载 -- [官网](https://dragonwell-jdk.io/) 下载区域选择 `China Mainland` -- [Dragonwell 8 预览](https://github.com/dragonwell-project/dragonwell8/releases) -- [Dragonwell 11 预览](https://github.com/dragonwell-project/dragonwell11/releases) +- [官网](https://www.azul.com/downloads/?package=jdk&show-old-builds=true#zulu) +- [下载镜像](https://d.injdk.cn/download/zulu) GraalVM 分为 Community Edition (CE) 和 Enterprise Edition (EE),除非你服务器大到会被 Oracle 找上门,不然请选择 Enterprise Edition -推荐下载最新版,也就是 Java 24 +推荐下载最新版,也就是 Java 25 - [下载 EE](https://www.graalvm.org/downloads/) - [下载 CE](https://github.com/graalvm/graalvm-ce-builds/releases/) @@ -82,27 +81,28 @@ Oracle 官网同样提供 GraalVM,但是上面的 GraalVM EE 包含了企业 ::: - + -Azul Zing 不提供公开下载。如确认服务器性能已受到当前 JDK 的瓶颈限制,可提交试用申请表申请试用。 +Alibaba Dragonwell 分为 Standard Edition 和 Extended Edition,推荐下载 Extended Edition -[填写申请](https://www.azul.com/prime-trial) +- [官网](https://dragonwell-jdk.io/) 下载区域选择 `China Mainland` +- [Dragonwell 8 预览](https://github.com/dragonwell-project/dragonwell8/releases) +- [Dragonwell 11 预览](https://github.com/dragonwell-project/dragonwell11/releases) - + -Azul Zulu 支持 Java 8 以上,Java 7 和 6 需要成为客户才能下载 +OpenJ9 有认证版和非认证版,主要是因为和 OpenJ9 和操作系统的关系而使用不同的许可证罢了,本质代码是一样的,直接下 `IBM Semeru Runtime Open Edition` 就行 -- [官网](https://www.azul.com/downloads/?package=jdk&show-old-builds=true#zulu) -- [下载镜像](https://d.injdk.cn/download/zulu) +- [官网](https://developer.ibm.com/languages/java/semeru-runtimes/downloads/) +- [下载镜像](https://d.injdk.cn/download/ibm) - + -OpenJ9 有认证版和非认证版,主要是因为和 OpenJ9 的关系和操作系统的关系而使用不同的许可证罢了,本质代码是一样的,直接下 `IBM Semeru Runtime Open Edition` 就行 +Azul Zing 不提供公开下载。如确认服务器性能已受到当前 JDK 的瓶颈限制,可提交试用申请表申请试用。 -- [官网](https://developer.ibm.com/languages/java/semeru-runtimes/downloads/) -- [下载镜像](https://d.injdk.cn/download/ibm) +[填写申请](https://www.azul.com/prime-trial) From 9a0eaf2fcf2f3de76e42ed66b88bd05da656aae4 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:02:43 -0400 Subject: [PATCH 4/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Semeru=20=E4=BB=8B?= =?UTF-8?q?=E7=BB=8D=E7=AB=A0=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 改正描述错误,OpenJ9 为 JVM 而非 JDK 分发,无法直接使用。 Semeru 是包含 OpenJ9 JVM 的 JDK 分发的正确名字 - 改善描述 --- astro.config.ts | 2 +- .../docs/java/advance/optimize/jvm/intro.mdx | 2 +- .../optimize/jvm/{openj9.md => semeru.md} | 32 ++++++++++--------- 3 files changed, 19 insertions(+), 17 deletions(-) rename src/content/docs/java/advance/optimize/jvm/{openj9.md => semeru.md} (72%) diff --git a/astro.config.ts b/astro.config.ts index 8805e6364..c0410097e 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -702,7 +702,7 @@ export default defineConfig({ "java/advance/optimize/jvm/common", "java/advance/optimize/jvm/dragonwell8", "java/advance/optimize/jvm/dragonwell11", - "java/advance/optimize/jvm/openj9", + "java/advance/optimize/jvm/semeru", "java/advance/optimize/jvm/graal", "java/advance/optimize/jvm/zing" ] diff --git a/src/content/docs/java/advance/optimize/jvm/intro.mdx b/src/content/docs/java/advance/optimize/jvm/intro.mdx index a02d16fce..fe73f9d53 100644 --- a/src/content/docs/java/advance/optimize/jvm/intro.mdx +++ b/src/content/docs/java/advance/optimize/jvm/intro.mdx @@ -20,7 +20,7 @@ flowchart TD Windows --> 内存充足 内存充足 --> C[GraalVM Enterprise Edition] Windows --> 内存不足 - 内存不足 --> OpenJ9 + 内存不足 --> Semeru Java21 --> Linux Linux --> 内存不足 Linux --> D[内存充足] diff --git a/src/content/docs/java/advance/optimize/jvm/openj9.md b/src/content/docs/java/advance/optimize/jvm/semeru.md similarity index 72% rename from src/content/docs/java/advance/optimize/jvm/openj9.md rename to src/content/docs/java/advance/optimize/jvm/semeru.md index fd822ee9c..1727993e7 100644 --- a/src/content/docs/java/advance/optimize/jvm/openj9.md +++ b/src/content/docs/java/advance/optimize/jvm/semeru.md @@ -1,8 +1,10 @@ --- -title: OpenJ9 +title: Semeru --- -OpenJ9 是完全重新设计的 JVM,拥有独立的垃圾回收系统,与 HotSpot JVM 的 G1GC、ZGC 等完全不同。 +Semeru 是由 IBM 提供的 JDK 发行版,使用 OpenJ9 JVM 而非 HotSpot JVM。 + +OpenJ9 是一套遵循 Java 虚拟机规范、独立实现并重新设计的 JVM,拥有独立的内存管理机制和垃圾收集策略,和 HotSpot JVM 内的 G1GC、ZGC 不同。 :::caution @@ -10,19 +12,17 @@ OpenJ9 是完全重新设计的 JVM,拥有独立的垃圾回收系统,与 Ho ::: -:::danger - -**重要兼容性说明** +:::danger[兼容性说明] -由于 Paper 服务端内置 Spark 性能分析器,而 Spark 与 OpenJ9 不兼容,因此默认情况下 **不能在 Paper 服务端上使用 OpenJ9**。 +Paper 核心内置 Spark 性能分析器,这会导致和 OpenJ9 JVM 不兼容,因此默认情况下 **不推荐** 将 Semeru 用于 Paper 或其分支。 ::: ## Paper 兼容性修复 -如需在 Paper 及其分支上使用 OpenJ9,需禁用内置 Spark: +如需在 Paper 及其分支上使用 Semeru,你需要禁用内置 Spark: -### 方法一:配置文件(推荐) +### 方法一:关闭内置 Spark(推荐) 在 `config/paper-global.yml` 中设置: @@ -31,19 +31,21 @@ spark: enabled: false ``` -### 方法二:启动参数 +:::caution + +禁用 Spark 后无法使用性能分析功能。 + +::: -添加参数: +### 方法二:使用插件版 Spark + +添加 JVM 启动参数: ```txt -Dpaper.preferSparkPlugin=true ``` -:::caution - -禁用 Spark 后无法使用性能分析功能。 - -::: +使核心优先选择 Spark 插件,而非内置的版本。 ## 基础参数 From 9f2938ebe98eae8f7e8618563a875115798fdf09 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sat, 28 Mar 2026 08:34:47 -0400 Subject: [PATCH 5/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E7=9A=84=20JDK=2024=20=E7=89=88=E6=9C=AC=E4=B8=BA=2025?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/choose-and-download-and-install-java.md | 2 +- .../docs/java/advance/optimize/jvm/graal.md | 2 +- src/content/docs/java/process/plugin/more/faq.md | 14 +------------- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/content/docs/general/java/choose-and-download-and-install-java.md b/src/content/docs/general/java/choose-and-download-and-install-java.md index e96fc5ede..9bb77da77 100644 --- a/src/content/docs/general/java/choose-and-download-and-install-java.md +++ b/src/content/docs/general/java/choose-and-download-and-install-java.md @@ -62,7 +62,7 @@ title: 选择、下载和安装 Java | Java 11 | [Dragonwell](https://dragonwell-jdk.io/) | | Java 17 | [Azul Zulu](https://d10.injdk.cn/openjdk/zulu/17/) | | Java 21 | [GraalVM](https://d10.injdk.cn/openjdk/graalvm/21/) / [Azul Zulu](https://d10.injdk.cn/openjdk/zulu/21/) | -| Java 24 | [GraalVM](https://d10.injdk.cn/openjdk/graalvm/24/) / [Azul Zulu](https://d10.injdk.cn/openjdk/zulu/24/) | +| Java 25 | [GraalVM](https://d10.injdk.cn/openjdk/graalvm/25/) / [Azul Zulu](https://d10.injdk.cn/openjdk/zulu/25/) | diff --git a/src/content/docs/java/advance/optimize/jvm/graal.md b/src/content/docs/java/advance/optimize/jvm/graal.md index 2de777948..65cf59005 100644 --- a/src/content/docs/java/advance/optimize/jvm/graal.md +++ b/src/content/docs/java/advance/optimize/jvm/graal.md @@ -28,7 +28,7 @@ GraalVM 24 以上应该移除 `-Dgraal.OptWriteMotion=true` 参数,同时将 ` :::caution -该参数最好用于 GraalVM 24 以上,GraalVM 24 添加了对 ZGC 的 JVMCI 支持 +该参数最好用于 GraalVM 25 及以上,GraalVM 24 添加了对 ZGC 的 JVMCI 支持 ::: diff --git a/src/content/docs/java/process/plugin/more/faq.md b/src/content/docs/java/process/plugin/more/faq.md index 1b9167732..2923d3bf5 100644 --- a/src/content/docs/java/process/plugin/more/faq.md +++ b/src/content/docs/java/process/plugin/more/faq.md @@ -55,19 +55,7 @@ org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError `has been compiled by a more recent version of the Java Runtime (class file version )` 就是你需要更新到的 Java 版本 -常用 Class Version 对应表 - -| Java 版本 | Class 文件版本 | -| --------- | -------------- | -| Java 7 | 51.0 | -| Java 8 | 52.0 | -| Java 11 | 55.0 | -| Java 16 | 60.0 | -| Java 17 | 61.0 | -| Java 21 | 65.0 | -| Java 22 | 66.0 | -| Java 23 | 67.0 | -| Java 24 | 68.0 | +你可以在 [这里](https://javaalmanac.io/bytecode/versions/) 找到 Class Version 和 Java 版本的对应表。 ## 循环依赖