mirror of
https://github.com/postyizhan/NitWikit.git
synced 2025-02-11 16:20:30 +08:00
Changes
This commit is contained in:
parent
b7c1c8080d
commit
fa7df3c988
@ -116,6 +116,10 @@ entity-tracking-range:
|
||||
|
||||
使用 Paper 矿物混淆时候,尽量不要在 **非主世界** 开启 `mode 2` 或 `mode 3`
|
||||
|
||||
## 心跳连接
|
||||
|
||||
在`purpur.yml`中打开选项`use-alternate-keepalive`
|
||||
|
||||
---
|
||||
|
||||
# 性能优化
|
||||
|
@ -1,237 +0,0 @@
|
||||
---
|
||||
title: JVM 优化
|
||||
sidebar_position: 7
|
||||
---
|
||||
|
||||
# JVM 优化
|
||||
|
||||
## 参数
|
||||
|
||||
:::danger
|
||||
|
||||
所有的启动参数都必须被放在 `-jar` 前面否则会导致服务器无法启动
|
||||
|
||||
:::
|
||||
|
||||
以下是推荐的 JVM 优化参数(至少 Java 17 以上)
|
||||
|
||||
**以下启动参数需要自己补全内存分配(-Xms 和 -Xmx) 和 服务端核心名(-jar 服务端名字.jar)**
|
||||
|
||||
<details>
|
||||
<summary>Mukul1127 Flag (ZGC) Plus - 4 核 8G 以上推荐</summary>
|
||||
|
||||
Mukul1127 Flag Plus 是现代的启动参数,使用 ZGC 作为垃圾回收,**注意:Mukul1127 Flag Plus 至少需要 4c8g 以上环境才可以发挥出优势,更低配置请使用 Aikar flag plus**,Mukul1127 Flag Plus 需要 Java 17 以上!
|
||||
|
||||
```shell
|
||||
java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -XX:+SegmentedCodeCache -XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+OmitStackTraceInFastThrow -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:-ZProactive
|
||||
```
|
||||
|
||||
如果你使用 Java 21 以上,你可以将`-XX:-ZProactive`换`-XX:+ZGenerational`,Java 22 以上必须切换
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Mukul1127 (ZGC) Flag - 使用 GraalVM 时推荐</summary>
|
||||
|
||||
GraalVM Java 17+ 的参数,
|
||||
|
||||
```shell
|
||||
java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -XX:+SegmentedCodeCache -XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+OmitStackTraceInFastThrow -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:-ZProactive
|
||||
```
|
||||
|
||||
如果你使用 Java 21 以上,你可以将 `-XX:-ZProactive` 换为 `-XX:+ZGenerational` ,Java 22 以上必须切换
|
||||
|
||||
### 以下是额外选项
|
||||
|
||||
更激进的内联,在 Graal 中通过 `-Dgraal.BaseTargetSpending=160` (默认为 120)和 OpenJDK 中的其他一些标志。具有较大缓存的 CPU 可能会从中受益。
|
||||
|
||||
`-Dgraal.OptWriteMotion=true` 和 `-Dgraal.WriteableCodeCache=true` ,它们看起来不稳定,但在 GraalVM 22.3.0+ 中可能更稳定
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Mukul1127 Flag (G1GC)</summary>
|
||||
|
||||
```shell
|
||||
java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+UseFMA -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -XX:+SegmentedCodeCache -XX:+OptimizeStringConcat -XX:+DoEscapeAnalysis -XX:+OmitStackTraceInFastThrow -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3 -XX:+UseG1GC -XX:MaxGCPauseMillis=37 -XX:+PerfDisableSharedMem -XX:G1HeapRegionSize=16M -XX:G1NewSizePercent=23 -XX:G1ReservePercent=20 -XX:SurvivorRatio=32 -XX:G1MixedGCCountTarget=3 -XX:G1HeapWastePercent=20 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:GCTimeRatio=99 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 通用
|
||||
|
||||
### 内存优化
|
||||
|
||||
如果服务器内存足够,可以加上此参数 `-XX:-ZUncommit` ,要求 JVM 总是提前把要用的内存申请好,
|
||||
|
||||
并且阻止 JVM 把临时空出来的内存还给系统。这会加快短时间有大量内存的需求时的速度。
|
||||
|
||||
### 大页支持
|
||||
|
||||
注意在 WINDOWS 上使用大页,必须要以管理员启动
|
||||
|
||||
当然,在动手前,让我们先试一试是不是系统已经支持了这项功能 ,在控制台执行此命令
|
||||
|
||||
```shell
|
||||
java -Xlog:gc+init -XX:+UseLargePages -Xmx1g -version
|
||||
```
|
||||
|
||||
如果出现了以下字样,那么说明不完全兼容:
|
||||
|
||||
```shell
|
||||
UseLargePages disabled, no large pages configured and available on the system.
|
||||
```
|
||||
|
||||
那么就说明当前系统并不支持大页,不过不要急,可以试一下这一行命令:
|
||||
|
||||
```shell
|
||||
java -Xlog:gc+init -XX:+UseTransparentHugePages -Xmx1g -version
|
||||
```
|
||||
|
||||
如果看到 `Large Page Support: Enabled (Transparent)` ,表示你的系统支持透明大页
|
||||
|
||||
但是如果你依然不支持或者想要追求极致性能,可以去百度搜索当前的系统如何开启大页,
|
||||
|
||||
这里就不再过多的赘述了。(LargePages 对服务器提升相当巨大,在我的电脑上,它提升了 50%的性能)
|
||||
|
||||
如果支持 LargePages ,加上此参数
|
||||
|
||||
```shell
|
||||
-XX:+UseLargePages -XX:LargePageSizeInBytes=2m -XX:+UseHugeTLBFS
|
||||
```
|
||||
|
||||
如果支持 TransparentHugePages (不要把两个都加上,优先 LargePages),加上此参数
|
||||
|
||||
```shell
|
||||
-XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2m -XX:+UseHugeTLBFS
|
||||
```
|
||||
|
||||
:::tip
|
||||
|
||||
在某些服务器上,开启大页后,会延长 JVM 的启动时间,时间从十秒到十分钟不等
|
||||
|
||||
:::
|
||||
|
||||
### SIMD
|
||||
|
||||
如果你使用的是 Pufferfish 的分支(Purpur,Leaf,Leaves,Gale),你可以添加此参数
|
||||
|
||||
```shell
|
||||
--add-modules=jdk.incubator.vector
|
||||
```
|
||||
|
||||
### 下载源加速
|
||||
|
||||
默认的 SpigotLibraryLoader 下载源在国内访问很慢,如果你使用的是 Leaf,你可以添加参数使用国内下载源:
|
||||
|
||||
```shell
|
||||
-DLeaf.library-download-repo=https://maven.aliyun.com/repository/public
|
||||
```
|
||||
|
||||
### 中文编码
|
||||
|
||||
防止乱码
|
||||
|
||||
```shell
|
||||
-Dfile.encoding=UTF-8
|
||||
```
|
||||
|
||||
### 删除垃圾信息
|
||||
|
||||
(仅适合 Leaf 或者 Gale)
|
||||
|
||||
```shell
|
||||
-Dgale.log.warning.root=false -Dgale.log.warning.offline.mode=false
|
||||
```
|
||||
|
||||
### 更快的安全随机数发生
|
||||
|
||||
```shell
|
||||
-Djava.security.egd=file:/dev/urandom
|
||||
```
|
||||
|
||||
### 异步日志
|
||||
|
||||
```shell
|
||||
-Xlog:async
|
||||
```
|
||||
|
||||
异步日志记录可能会导致日志记录的顺序不确定
|
||||
|
||||
### 更长的 KeepAlive 时间
|
||||
|
||||
```shell
|
||||
-Dpaper.playerconnection.keepalive=60
|
||||
```
|
||||
|
||||
如果你的网络不好,可以适当延长 keepalive 时间,打开[alternate-keepalive](go.md#use-alternate-keepalive)
|
||||
|
||||
## 参数解释
|
||||
|
||||
### ZGC 与 G1GC
|
||||
|
||||
废话不说,直接上图
|
||||
|
||||
ZGC
|
||||
|
||||
![](_images/zgc.png)
|
||||
|
||||
G1GC
|
||||
|
||||
![](_images/g1gc.png)
|
||||
|
||||
显然,单次 GC 时间从 32ms 降到 0.012ms
|
||||
|
||||
:::tip
|
||||
|
||||
你可能会发现`ZGC Cycle Time`很长,但其实你不用关心,因为没有停顿主线程,你只需要关心`ZGC Pause Time`即可
|
||||
|
||||
:::
|
||||
|
||||
## JDK
|
||||
|
||||
对各种 JDK 构建的性能测试
|
||||
|
||||
在经过冰块大佬,llf的测试后,我们得出了在 Java 21 上对各个 JDK 的性能排行
|
||||
|
||||
### 性能
|
||||
|
||||
按照测试结果高到低排序
|
||||
|
||||
#### Azul Platform Primes(Zing)
|
||||
|
||||
Azul 开发的一款超高性能的 JDK,测试时,我们发现 Zing **第一次**初始性能并不如 Zulu,GraalVM ,但是在测试机上,大约十分钟后 Azul 性能开始反超 Zulu,GraalVM
|
||||
|
||||
**注意:如果你使用 Azul,那就不要使用上述任何优化参数,并且,该JDK仅能用于Linux**
|
||||
|
||||
目前有点小小的兼容性问题,模组服就不要尝试了
|
||||
|
||||
优化参数我们还在探索
|
||||
|
||||
#### GraalVM
|
||||
|
||||
新神,实测区块生成比 Zulu 快了 10%(其他指标由于没有Nigger没测),JS 执行性能是 Nashorn 两倍以上
|
||||
|
||||
#### Zulu OpenJDK
|
||||
|
||||
老牌性能神,比 Oracle JDK 快了 20 - 30%
|
||||
|
||||
BellSoft Liberica JDK 和 Adoptium Eclipse Temurin 在 MC 上的性能表现不如前三个
|
||||
|
||||
### 内存占用
|
||||
|
||||
#### IBM OpenJ9
|
||||
|
||||
内存占用最小,但是性能非常不好,适合在低内存环境使用
|
||||
|
||||
### 不推荐的
|
||||
|
||||
* OpenJDK builds by Oracle
|
||||
* Oracle Java SE Development Kit
|
||||
* AdoptOpenJDK
|
||||
* Amazon Corretto
|
||||
* Microsoft Build of OpenJDK
|
||||
* 阿里巴巴 Dragonwell
|
||||
* SapMachine
|
||||
* Red Hat OpenJDK
|
||||
* ojdkbuild
|
107
docs-java/process/maintenance/optimize/jvm/common.md
Normal file
107
docs-java/process/maintenance/optimize/jvm/common.md
Normal file
@ -0,0 +1,107 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
title: 通用优化参数
|
||||
slug: /optimize/jvm/common
|
||||
---
|
||||
|
||||
# 通用参数
|
||||
|
||||
## 大页支持
|
||||
|
||||
注意在 WINDOWS 上使用大页,必须要以管理员启动
|
||||
|
||||
当然,在动手前,让我们先试一试是不是系统已经支持了这项功能 ,在控制台执行此命令
|
||||
|
||||
```shell
|
||||
java -Xlog:gc+init -XX:+UseLargePages -Xmx1g -version
|
||||
```
|
||||
|
||||
如果出现了以下字样,那么说明不完全兼容:
|
||||
|
||||
```shell
|
||||
UseLargePages disabled, no large pages configured and available on the system.
|
||||
```
|
||||
|
||||
那么就说明当前系统并不支持大页,不过不要急,可以试一下这一行命令:
|
||||
|
||||
```shell
|
||||
java -Xlog:gc+init -XX:+UseTransparentHugePages -Xmx1g -version
|
||||
```
|
||||
|
||||
如果看到 `Large Page Support: Enabled (Transparent)` ,表示你的系统支持透明大页
|
||||
|
||||
但是如果你依然不支持或者想要追求极致性能,可以去百度搜索当前的系统如何开启大页,
|
||||
|
||||
这里就不再过多的赘述了。(LargePages 对服务器提升相当巨大,在我的电脑上,它提升了 50%的性能)
|
||||
|
||||
如果支持 LargePages ,加上此参数
|
||||
|
||||
```shell
|
||||
-XX:+UseLargePages -XX:LargePageSizeInBytes=2m
|
||||
```
|
||||
|
||||
如果支持 TransparentHugePages (不要把两个都加上,优先 LargePages),加上此参数
|
||||
|
||||
```shell
|
||||
-XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2m
|
||||
```
|
||||
|
||||
:::tip
|
||||
|
||||
在某些服务器上,开启大页后,会延长 JVM 的启动时间,时间从十秒到十分钟不等
|
||||
|
||||
:::
|
||||
|
||||
## SIMD
|
||||
|
||||
如果你使用的是 Pufferfish 的分支(Purpur,Leaf,Leaves,Gale),你可以添加此参数
|
||||
|
||||
```shell
|
||||
--add-modules=jdk.incubator.vector
|
||||
```
|
||||
|
||||
## 下载源加速
|
||||
|
||||
默认的 SpigotLibraryLoader 下载源在国内访问很慢,如果你使用的是 Leaf,你可以添加参数使用国内下载源:
|
||||
|
||||
```shell
|
||||
-DLeaf.library-download-repo=https://maven.aliyun.com/repository/public
|
||||
```
|
||||
|
||||
## 中文编码
|
||||
|
||||
防止乱码
|
||||
|
||||
```shell
|
||||
-Dfile.encoding=UTF-8
|
||||
```
|
||||
|
||||
## 删除垃圾信息
|
||||
|
||||
(仅适合 Leaf 或者 Gale)
|
||||
|
||||
```shell
|
||||
-Dgale.log.warning.root=false -Dgale.log.warning.offline.mode=false
|
||||
```
|
||||
|
||||
## 更快的安全随机数发生
|
||||
|
||||
```shell
|
||||
-Djava.security.egd=file:/dev/urandom
|
||||
```
|
||||
|
||||
## 异步日志
|
||||
|
||||
```shell
|
||||
-Xlog:async
|
||||
```
|
||||
|
||||
异步日志记录可能会导致日志记录的顺序不确定
|
||||
|
||||
### 更长的 KeepAlive 时间
|
||||
|
||||
```shell
|
||||
-Dpaper.playerconnection.keepalive=60
|
||||
```
|
||||
|
||||
如果你的网络不好,可以适当延长 keepalive 时间,打开[alternate-keepalive](/docs-java/process/maintenance/optimize/go.md#心跳连接)
|
53
docs-java/process/maintenance/optimize/jvm/dragonwell11.md
Normal file
53
docs-java/process/maintenance/optimize/jvm/dragonwell11.md
Normal file
@ -0,0 +1,53 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
title: Dragonwell 11
|
||||
slug: /optimize/jvm/dragonwell
|
||||
---
|
||||
|
||||
# Dragonwell 11
|
||||
|
||||
这些参数只适合 Dragonwell 11
|
||||
|
||||
## 基础
|
||||
|
||||
```shell
|
||||
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3
|
||||
```
|
||||
|
||||
这些是基础参数
|
||||
|
||||
## ZGC
|
||||
|
||||
Dragonwell11 的 ZGC 不同于 OpenJDK11 的 ZGC,Dragonwell 通过移植 OpenJDK 15+的 ZGC补丁,使得Dragonwell的ZGC可以投入生产环境
|
||||
|
||||
添加参数 `-XX:+UseZGC -XX:AllocatePrefetchStyle=1`以启用
|
||||
|
||||
## G1GC
|
||||
|
||||
添加参数
|
||||
|
||||
```shell
|
||||
-XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
|
||||
```
|
||||
|
||||
## 内联优化
|
||||
|
||||
添加参数`-XX:+UseVtableBasedCHA`
|
||||
|
||||
## 对象头压缩
|
||||
|
||||
可以节约10%左右的Java对象内存占用,并可能提升程序性能。**目前仅支持G1GC和ParallelGC**
|
||||
|
||||
添加参数`-XX:+UseCompactObjectHeaders`
|
||||
|
||||
## Wisp
|
||||
|
||||
Wisp在JVM上提供了一种用户态的线程实现。开启Wisp2后,Java线程不再简单地映射到内核级线程,而是对应到一个协程,JVM在少量内核线上调度大量协程执行,以减少内核的调度开销
|
||||
|
||||
只需添加JVM参数即可开启Wisp2,无需更改程序!!
|
||||
|
||||
**仅支持Linux x64**
|
||||
|
||||
添加参数`-XX:+UnlockExperimentalVMOptions -XX:+UseWisp2`
|
||||
|
||||
|
64
docs-java/process/maintenance/optimize/jvm/dragonwell8.md
Normal file
64
docs-java/process/maintenance/optimize/jvm/dragonwell8.md
Normal file
@ -0,0 +1,64 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
title: Dragonwell 8
|
||||
slug: /optimize/jvm/dragonwell8
|
||||
---
|
||||
|
||||
|
||||
# Dragonwell 8
|
||||
|
||||
这些参数只适合 Dragonwell 8
|
||||
|
||||
## 基础
|
||||
|
||||
```shell
|
||||
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+ParallelRefProcEnabled -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+PerfDisableSharedMem -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:MaxInlineLevel=15 -XX:MaxVectorSize=32 -XX:+UseCompressedOops -XX:ThreadPriorityPolicy=1 -XX:+UseDynamicNumberOfGCThreads -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=350M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseFPUForSpilling
|
||||
```
|
||||
|
||||
这些是基础参数
|
||||
|
||||
x86 Java 8 用户可以添加以下附加参数:
|
||||
|
||||
```shell
|
||||
-XX:+UseXMMForArrayCopy
|
||||
```
|
||||
|
||||
G1GC 参数
|
||||
|
||||
```shell
|
||||
-XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30
|
||||
```
|
||||
|
||||
## JWarmup
|
||||
|
||||
JWarmup的基本原理: 根据前一次程序运行的情况,记录下热点方法、类编译顺序等信息,在应用下一次启动的时候积极加载相关的类,并积极编译相关的方法,进而应用启动后可以直接运行编译好的Java代码(C2编译)。
|
||||
|
||||
### 使用步骤
|
||||
|
||||
#### 记录阶段(一般是beta环境),在5分钟后生成profiling data:
|
||||
|
||||
添加参数`-XX:-ClassUnloading -XX:-CMSClassUnloadingEnabled -XX:-ClassUnloadingWithConcurrentMark -XX:CompilationWarmUpLogfile=jwarmup.log -XX:+CompilationWarmUpRecording -XX:CompilationWarmUpRecordTime=300`
|
||||
|
||||
#### 使用阶段(一般是生产环境)
|
||||
|
||||
添加参数`-XX:+CompilationWarmUp -XX:-TieredCompilation -XX:CompilationWarmUpLogfile=jwarmup.log -XX:CompilationWarmUpDeoptTime=0`
|
||||
|
||||
## 对象头压缩
|
||||
|
||||
可以节约10%左右的Java对象内存占用,并可能提升程序性能。
|
||||
|
||||
添加参数`-XX:+UseCompactObjectHeaders`
|
||||
|
||||
## Wisp
|
||||
|
||||
Wisp在JVM上提供了一种用户态的线程实现。开启Wisp2后,Java线程不再简单地映射到内核级线程,而是对应到一个协程,JVM在少量内核线上调度大量协程执行,以减少内核的调度开销
|
||||
|
||||
只需添加JVM参数即可开启Wisp2,无需更改程序!!
|
||||
|
||||
**仅支持Linux x64**
|
||||
|
||||
添加参数`-XX:+UnlockExperimentalVMOptions -XX:+UseWisp2`
|
||||
|
||||
## G1ElasticHeap
|
||||
|
||||
G1ElasticHeap 是一种 GC 功能,用于将 Java 堆的内存返回给操作系统,以减少 Java 进程的内存占用。要启用此功能,您需要通过以下选项使用 G1 GC:`-XX:+G1ElasticHeap -XX:+ElasticHeapPeriodicUncommit`
|
39
docs-java/process/maintenance/optimize/jvm/graal.md
Normal file
39
docs-java/process/maintenance/optimize/jvm/graal.md
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
title: GraalVM EE
|
||||
slug: /optimize/jvm/graalvm
|
||||
---
|
||||
|
||||
# GraalVM
|
||||
|
||||
这些参数只适合 GraalVM EE
|
||||
|
||||
## 基础参数
|
||||
|
||||
```shell
|
||||
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1
|
||||
```
|
||||
|
||||
## GraalVM Mod兼容
|
||||
|
||||
GraalVM EE 22.3.0 修复了所有已知的 Minecraft 错误
|
||||
|
||||
## G1GC
|
||||
|
||||
```shell
|
||||
-XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
|
||||
```
|
||||
|
||||
## ZGC
|
||||
|
||||
```shell
|
||||
-XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:+ZGenerational
|
||||
```
|
||||
|
||||
## 正在考虑的标志
|
||||
|
||||
更激进的内联,在 Graal 中通过`-Dgraal.BaseTargetSpending=160`(默认为 120)和 OpenJDK 中的其他一些标志。具有较大缓存的 CPU 可能会从中受益
|
||||
|
||||
`-Dgraal.OptWriteMotion=true`和`-Dgraal.WriteableCodeCache=true` ,看起来不稳定,但在 GraalVM 22.3.0 中可能更稳定,显然,针对Mod
|
||||
|
||||
~~神无需优化~~
|
56
docs-java/process/maintenance/optimize/jvm/jvm.md
Normal file
56
docs-java/process/maintenance/optimize/jvm/jvm.md
Normal file
@ -0,0 +1,56 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: JVM 优化
|
||||
slug: /optimize/jvm
|
||||
---
|
||||
|
||||
# JVM 优化
|
||||
|
||||
这篇文章可以说是整个笨蛋文档中编写历时最久的(),为了确保正确性,我们在Windows和Linux 上进行了大量性能测试,结果可以说是十分出人意料
|
||||
|
||||
这场测试的细节和日志,报告,Spark,GCLog等可以在[Test - Java](https://github.com/lilingfengdev/Test-Java)找到
|
||||
|
||||
## Java 选择
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[选择]
|
||||
A --> Java8
|
||||
A --> Java11
|
||||
A --> Java21
|
||||
Java8 --> Dragonwell
|
||||
Java11 --> Dragonwell
|
||||
Java21 --> Windows
|
||||
Windows --> 内存充足
|
||||
内存充足 --> GraalVMEE
|
||||
Windows --> 内存不足
|
||||
内存不足 --> AmazonCorretto
|
||||
Java21 --> Linux
|
||||
Linux --> 等待测试
|
||||
```
|
||||
|
||||
这可能与你想的不太一样
|
||||
|
||||
Zulu 被淘汰了,这是事实
|
||||
|
||||
## 垃圾回收器
|
||||
|
||||
经过我们的多次测试,G1GC和ZGC 最适合MC服务器(还有一个 Zing C4)
|
||||
|
||||
选择!
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[选择]
|
||||
A --> 机器配置足够,起步4h8g,推荐8h8g
|
||||
A --> 机器配置不达标
|
||||
机器配置足够,起步4h8g,推荐8h8g --> Java21,或者Dragonwell11
|
||||
机器配置足够,起步4h8g,推荐8h8g --> 其他版本
|
||||
Java21,或者Dragonwell11 --> ZGC
|
||||
其他版本 --> G1GC
|
||||
机器配置不达标 --> G1GC
|
||||
```
|
||||
|
||||
ZGC 的无停顿可以给玩家带来更好的体验,并且更充分的利用多核
|
||||
|
||||
对于 GC 细节性的优化请阅读每个Java的优化指南
|
53
docs-java/process/maintenance/optimize/jvm/zing.md
Normal file
53
docs-java/process/maintenance/optimize/jvm/zing.md
Normal file
@ -0,0 +1,53 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
title: Azul Zing
|
||||
slug: /optimize/jvm/zing
|
||||
---
|
||||
|
||||
# Azul Zing
|
||||
|
||||
~~神无需优化~~
|
||||
|
||||
通用内容的参数可以使用(比如大页),但不要自行指定GC,或其他优化参数
|
||||
|
||||
## ReadyNow
|
||||
|
||||
你大概已经注意到了,Zing的预热期很长,ReadyNow就是来解决这个问题的
|
||||
|
||||
若要启用 ReadyNow,请添加以下命令行选项,其中两者`<file>`通常相同:
|
||||
|
||||
`-XX:ProfileLogIn=<file>` 指示 Azul Platform Prime 使用现有配置文件日志中的信息。
|
||||
|
||||
`-XX:ProfileLogOut=<file>` 记录之前的编译和运行中的去优化决策。
|
||||
|
||||
然后,运行应用程序将自动生成或更新配置文件日志。此配置文件日志将在应用程序的后续运行时使用,从而改进预热。
|
||||
|
||||
官方推荐所有重要函数执行**5万遍**
|
||||
|
||||
添加`-XX:+FalconUseCompileStashing`以使用编译存储
|
||||
|
||||
## 垃圾回收器
|
||||
|
||||
C4 是 Zing 中唯一的垃圾收集器,取代了 OpenJDK 中可用的其他垃圾收集器。
|
||||
|
||||
## 紧凑字符串
|
||||
|
||||
添加选项`-XX:+CompactStrings`可减少内存占用,提高字符串密集型应用程序的性能,并减少花费在垃圾回收上的时间
|
||||
|
||||
## Zing System Tool
|
||||
|
||||
这玩意可以让你的系统更加适应Zing,可以自动优化系统配置,开启大页,但很可惜,这需要成为付费客户,等待富哥
|
||||
|
||||
## 下载
|
||||
|
||||
虽然需要公司账户,但我们通过神秘手段搞到了安装包,都是JDK
|
||||
|
||||
(放心,没毒,下载源都是cdn.azul.com(Azul官方网站))
|
||||
|
||||
[RPM](https://cdn.azul.com/zing-zvm/ZVM24.06.0.0/zing24.06.0.0-2-jdk21.0.3-linux.x86_64.rpm)
|
||||
|
||||
[TAR.GZ](https://cdn.azul.com/zing-zvm/ZVM24.06.0.0/zing24.06.0.0-2-jdk21.0.3-linux_x64.tar.gz)
|
||||
|
||||
[DEB](https://cdn.azul.com/zing-zvm/ZVM24.06.0.0/zing24.06.0.0-2-jdk21.0.3-linux_amd64.deb)
|
||||
|
||||
|
@ -57,15 +57,15 @@ Purpur 还原了 Minecraft 的部分特性,用来开生存服务器更加适
|
||||
|
||||
### 插件服核心推荐
|
||||
|
||||
| 名称 | 介绍 | 推荐与否 | 下载镜像 | 支持的MC版本 |
|
||||
| --- | ----------- | --- | --- |-----------|
|
||||
| [Paper](https://papermc.io/) | 稳定性最好的核心,但是性能在高版本不太好 | 推荐 | [McRes](https://mcres.cn/downloads/paper.html) [FastMirror](https://www.fastmirror.net/#/download/Paper) [原子云](https://res.nullatom.com/Minecraft/Server/Paper/) | 1.8.8-最新 |
|
||||
| [Purpur](https://purpurmc.org) | 高版本最推荐的插件端核心,拥有较好的性能和稳定性,是开服务器的不二之选 | 推荐 | [McRes](https://mcres.cn/downloads/purpur.html) [FastMirror](https://www.fastmirror.net/#/download/Purpur) | 1.16.5-最新 |
|
||||
| [Leaves](https://leavesmc.org/) | Leaves就是生电版的paper,他完全支持paper能使用的全部插件,相比paper拥有更强的优化和生电向特性支持。leaves基本完全支持客户端生电 Mod ,包括但不限于carpet,pca,投影,共享原理图,minihud,bbor,ommc,xaero小地图,jade,appleskin等| 非常推荐 | [官方网站](https://leavesmc.org/downloads/leaves) [McRes](https://mcres.cn/downloads/leaves.html) | 1.17.1-最新(1.19以前不推荐用,那个时候没啥功能) |
|
||||
| [Leaf](https://github.com/Winds-Studio/Leaf) | 基于Gale,拥有非常棒的性能(叶子),支持中文名进服,拥有较好的稳定性,国人开发 | 非常推荐 | [McRes](https://mcres.cn/downloads/leaf.html) | 1.19.3-最新 |
|
||||
| [PandaSpigot](https://github.com/hpfxd/PandaSpigot) | paper1.8.8的fork,此核心只有1.8版本,可用于开PVP服务器,含大量konckback配置选项 | 推荐 | [McRes](https://vip.123pan.cn/1821558579/Lingyi/core/pandaspigot-116-mcres.cn.jar) | 1.8 |
|
||||
| [SportPaper](https://github.com/Electroid/SportPaper) | paper1.8.8的fork,此核心只有1.8版本,拥有较好的性能和很多生存配置选项,如果你不需要开PVP,你可以选择这个核心 | 推荐 | [青草云MC](https://qcymc.cloud/f/ERGcp/sportpaper-1.8.8-R0.1-SNAPSHOT.jar) | 1.8 |
|
||||
| [Beast](https://github.com/HomoMC/Beast) | Paper 1.12.2 分支,旨在提供极致性能、错误修复和改进。推荐使用Java 21以上 | 推荐 | [青草云MC](https://qcymc.cloud/f/G6ziA/beast-1.12.2.jar) | 1.12.2 |
|
||||
| 名称 | 介绍 | 推荐与否 | 下载镜像 | 支持的MC版本 |
|
||||
|-------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------|
|
||||
| [Paper](https://papermc.io/) | 稳定性最好的核心,但是性能在高版本不太好 | 推荐 | [McRes](https://mcres.cn/downloads/paper.html) [FastMirror](https://www.fastmirror.net/#/download/Paper) [原子云](https://res.nullatom.com/Minecraft/Server/Paper/) | 1.8.8-最新 |
|
||||
| [Purpur](https://purpurmc.org) | 高版本最推荐的插件端核心,拥有较好的性能和稳定性,是开服务器的不二之选 | 推荐 | [McRes](https://mcres.cn/downloads/purpur.html) [FastMirror](https://www.fastmirror.net/#/download/Purpur) | 1.16.5-最新 |
|
||||
| [Leaves](https://leavesmc.org/) | Leaves就是生电版的paper,他完全支持paper能使用的全部插件,相比paper拥有更强的优化和生电向特性支持。leaves基本完全支持客户端生电 Mod ,包括但不限于carpet,pca,投影,共享原理图,minihud,bbor,ommc,xaero小地图,jade,appleskin等 | 非常推荐 | [官方网站](https://leavesmc.org/downloads/leaves) [McRes](https://mcres.cn/downloads/leaves.html) | 1.17.1-最新(1.19以前不推荐用,那个时候没啥功能) |
|
||||
| [Leaf](https://github.com/Winds-Studio/Leaf) | 基于Gale,拥有非常棒的性能(叶子),支持中文名进服,拥有较好的稳定性,国人开发 | 非常推荐 | [McRes](https://mcres.cn/downloads/leaf.html) | 1.19.3-最新 |
|
||||
| [PandaSpigot](https://github.com/hpfxd/PandaSpigot) | paper1.8.8的fork,此核心只有1.8版本,可用于开PVP服务器,含大量konckback配置选项 | 推荐 | [McRes](https://vip.123pan.cn/1821558579/Lingyi/core/pandaspigot-116-mcres.cn.jar) | 1.8 |
|
||||
| [SportPaper](https://github.com/Electroid/SportPaper) | paper1.8.8的fork,此核心只有1.8版本,拥有较好的性能和很多生存配置选项,如果你不需要开PVP,你可以选择这个核心 | 推荐 | [青草云MC](https://qcymc.cloud/f/ERGcp/sportpaper-1.8.8-R0.1-SNAPSHOT.jar) | 1.8 |
|
||||
| [Beast](https://github.com/HomoMC/Beast) | Paper 1.12.2 分支,旨在提供极致性能、错误修复和改进。推荐使用Java 21以上 | 推荐 | [青草云MC](https://qcymc.cloud/f/G6ziA/beast-1.12.2.jar) | 1.12.2 |
|
||||
|
||||
:::info
|
||||
|
||||
@ -73,28 +73,37 @@ Purpur 还原了 Minecraft 的部分特性,用来开生存服务器更加适
|
||||
|
||||
:::
|
||||
|
||||
<details>
|
||||
<summary>高版本不同服务端核心的比较</summary>
|
||||
如果你不知道怎么选,我们为你提供一个简单的方法(:
|
||||
|
||||
# 性能
|
||||
|
||||
Leaf > Purpur > Paper
|
||||
|
||||
Leaves 参与比较是很愚蠢的,它的性能介于 Purpur Paper之间
|
||||
|
||||
# 兼容
|
||||
|
||||
Paper = Purpur > Leaf /Leaves
|
||||
|
||||
Leaves 由于假人的存在会不兼容部分老的插件,比如Authme官方版本,
|
||||
|
||||
# 生电
|
||||
|
||||
Leaves > Leaf > Purpur > Paper
|
||||
|
||||
Leaf 相比于 Purpur 多了生电模组兼容,没多什么特性
|
||||
|
||||
</details>
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[服务端版本]
|
||||
A --> 1.8
|
||||
A --> 1.12.2
|
||||
A --> 1.16.5+
|
||||
1.8 --> PVP
|
||||
PVP --> PandaSpigot
|
||||
1.8 --> 生存
|
||||
生存 --> SportPaper
|
||||
1.12.2 --> 性能
|
||||
性能 --> Beast
|
||||
1.12.2 --> 稳定
|
||||
稳定 --> Paper
|
||||
1.16.5+ --> 生电
|
||||
生电 --> 1.18以下
|
||||
生电 --> 1.18以上
|
||||
1.18以下 --> Purpur
|
||||
1.18以上 --> 假人,以及一些偏门的特性
|
||||
假人,以及一些偏门的特性 -->|需要| Leaves
|
||||
假人,以及一些偏门的特性 -->|不需要| Leaf
|
||||
1.16.5+ --> 高性能
|
||||
高性能 --> 1.19以上
|
||||
1.19以上 --> Leaf
|
||||
高性能 --> 1.19以下
|
||||
1.19以下 --> Purpur
|
||||
1.16.5+ --> 其他
|
||||
其他 --> Purpur
|
||||
```
|
||||
|
||||
:::danger
|
||||
|
||||
@ -102,10 +111,10 @@ Leaf 相比于 Purpur 多了生电模组兼容,没多什么特性
|
||||
|
||||
:::
|
||||
|
||||
| 名称 | 介绍 |
|
||||
| --- | ----------- |
|
||||
| [CraftBukkit](https://getbukkit.org/download/craftbukkit) | 插件端鼻祖核心,无优化 |
|
||||
| [Spigot](https://getbukkit.org/download/spigot/) | CraftBukkit的分支,有一点优化,仍不推荐 |
|
||||
| 名称 | 介绍 |
|
||||
|-----------------------------------------------------------|---------------------------|
|
||||
| [CraftBukkit](https://getbukkit.org/download/craftbukkit) | 插件端鼻祖核心,无优化 |
|
||||
| [Spigot](https://getbukkit.org/download/spigot/) | CraftBukkit的分支,有一点优化,仍不推荐 |
|
||||
|
||||
:::danger
|
||||
|
||||
@ -129,22 +138,22 @@ Leaf 相比于 Purpur 多了生电模组兼容,没多什么特性
|
||||
|
||||
#### Forge混合端
|
||||
|
||||
| 名称 | 介绍 | 推荐与否 | 下载镜像 | 支持版本 |
|
||||
|---------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
|
||||
| [Crucible](https://github.com/CrucibleMC/Crucible) | Thermos的分支,目前还在积极维护,完全兼容Thermos | 推荐 | [McRes](https://www.123pan.com/s/HRhfjv-3ey8v.html),[青草云MC(推荐)](https://qcymc.cloud/f/gJRFG/Crucible-1.7.10-staging-0c25d250-server.jar)([library文件](https://github.moeyy.xyz/https://github.com/CrucibleMC/Crucible/releases/download/staging-0c25d25/libraries.zip)) | 1.7.10 |
|
||||
| 名称 | 介绍 | 推荐与否 | 下载镜像 | 支持版本 |
|
||||
|---------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|
|
||||
| [Crucible](https://github.com/CrucibleMC/Crucible) | Thermos的分支,目前还在积极维护,完全兼容Thermos | 推荐 | [McRes](https://www.123pan.com/s/HRhfjv-3ey8v.html),[青草云MC(推荐)](https://qcymc.cloud/f/gJRFG/Crucible-1.7.10-staging-0c25d250-server.jar)([library文件](https://github.moeyy.xyz/https://github.com/CrucibleMC/Crucible/releases/download/staging-0c25d25/libraries.zip)) | 1.7.10 |
|
||||
| [CatServer](https://catmc.org/) | (推荐,但我真不喜欢核心内置广告)。既可以加入 Mod 又可以加入插件缺点:部分插件不支持,部分 Mod 不支持; Mod 和插件在一起运行难免出现一些七七八八的 bug。 | 推荐1.12.2 | [McRes](https://mcres.cn/downloads/catserver.html) [FastMirror](https://www.fastmirror.net/#/download/CatServer) | 1.12.2/1.16.5/1.18.2/ |
|
||||
| [Mohist](https://mohistmc.com/software/mohist) | 兼容paper的一些插件支持,兼容 Mod 和插件;缺点:比较多插件不支持,部分 Mod 不支持; Mod 和插件在一起运行难免出现一些七七八八的 bug。 | 推荐高版本 | [McRes](https://mcres.cn/downloads/mohist.html) [FastMirror](https://www.fastmirror.net/#/download/Mohist) [原子云](https://res.nullatom.com/Minecraft/Server/Mohist/) | 1.12.2/1.16.5/1.18+ |
|
||||
| [Arclight-Forge](https://github.com/IzzelAliz/Arclight) | - | 推荐高版本 | [FastMirror](https://www.fastmirror.net/#/download/Arclight) [McRes](https://mcres.cn/downloads/arclight.html) | 1.16.5+ |
|
||||
| [Magma](https://magmafoundation.org/) | - | - | [McRes](https://mcres.cn/downloads/magma.html) | 没用过,不知道 |
|
||||
| [Mohist](https://mohistmc.com/software/mohist) | 兼容paper的一些插件支持,兼容 Mod 和插件;缺点:比较多插件不支持,部分 Mod 不支持; Mod 和插件在一起运行难免出现一些七七八八的 bug。 | 推荐高版本 | [McRes](https://mcres.cn/downloads/mohist.html) [FastMirror](https://www.fastmirror.net/#/download/Mohist) [原子云](https://res.nullatom.com/Minecraft/Server/Mohist/) | 1.12.2/1.16.5/1.18+ |
|
||||
| [Arclight-Forge](https://github.com/IzzelAliz/Arclight) | - | 推荐高版本 | [FastMirror](https://www.fastmirror.net/#/download/Arclight) [McRes](https://mcres.cn/downloads/arclight.html) | 1.16.5+ |
|
||||
| [Magma](https://magmafoundation.org/) | - | - | [McRes](https://mcres.cn/downloads/magma.html) | 没用过,不知道 |
|
||||
| [Sponge](https://spongepowered.org/]Sponge) | 可加入sponge插件,支持 Mod,优化极强,而且服务器兼容性更高,对于线程优化能力更强,负载更好。缺点:即使你用了很多办法也很难让bukkit插件稳定运行;sponge插件特别少;启动速度特别慢。操作特别难,与前面的完全不相同。 | 不推荐新手使用 | [McRes](https://mcres.cn/downloads/spongeforge.html) [FastMirror](https://www.fastmirror.net/#/download/SpongeForge) | 没用过,不知道 |
|
||||
|
||||
#### Fabric 混合端
|
||||
|
||||
| 名称 | 介绍 | 推荐与否 | 下载镜像 |
|
||||
|----------------------------------------------------------|-----------------------------------------|------|--------------------------------------------------------------|
|
||||
| [Banner](https://new.mohistmc.com/software/banner) | 并不是一款端,而是一个 Mod 需要安装在Fabric,安装后重启即可加载插件 | - | [McRes](https://mcres.cn/downloads/banner.html) |
|
||||
| 名称 | 介绍 | 推荐与否 | 下载镜像 |
|
||||
|----------------------------------------------------------|-----------------------------------------|------|----------------------------------------------------------------------------------------------------------------|
|
||||
| [Banner](https://new.mohistmc.com/software/banner) | 并不是一款端,而是一个 Mod 需要安装在Fabric,安装后重启即可加载插件 | - | [McRes](https://mcres.cn/downloads/banner.html) |
|
||||
| [Arclight-Fabric](https://github.com/IzzelAliz/Arclight) | 出现时间比banner晚,目前不太稳定 | - | [FastMirror](https://www.fastmirror.net/#/download/Arclight) [McRes](https://mcres.cn/downloads/arclight.html) |
|
||||
| [Cardboard](https://cardboardpowered.org/) | 支持的版本较多,支持1.16.5-1.20.4 | - | [McRes](https://mcres.cn/downloads/carboard.html) |
|
||||
| [Cardboard](https://cardboardpowered.org/) | 支持的版本较多,支持1.16.5-1.20.4 | - | [McRes](https://mcres.cn/downloads/carboard.html) |
|
||||
|
||||
![](_images/那些服务端有后门吗.png)
|
||||
|
||||
|
@ -27,29 +27,31 @@ MOD 服务端
|
||||
:::
|
||||
|
||||
### 常见插件端(Paper 等)
|
||||
| Minecraft 版本 | 最低版本 | 推荐版本 |
|
||||
| -------------- | -------- | -------- |
|
||||
| 1.0 - 1.11.2 | Java 6 | Java 8 |
|
||||
| 1.12 - 1.16.4 | Java 8 | Java 11 |
|
||||
| 1.16.5 | Java 8 | Java 16 |
|
||||
| 1.17 | Java 16 | Java 17 |
|
||||
|
||||
| Minecraft 版本 | 最低版本 | 推荐版本 |
|
||||
|-----------------|---------|---------|
|
||||
| 1.0 - 1.11.2 | Java 6 | Java 8 |
|
||||
| 1.12 - 1.16.4 | Java 8 | Java 11 |
|
||||
| 1.16.5 | Java 8 | Java 16 |
|
||||
| 1.17 | Java 16 | Java 17 |
|
||||
| 1.17.1 - 1.20.4 | Java 17 | Java 21 |
|
||||
| 1.20.5 - 1.21 | Java 21 | Java 21 |
|
||||
| 1.20.5 - 1.21 | Java 21 | Java 21 |
|
||||
|
||||
### 混合服务端(CatServer 等)
|
||||
TODO
|
||||
|
||||
## 直接下载
|
||||
|
||||
:::warning
|
||||
此处下载链接可能不是最新版,如需下载最新版请跳转至 [手动下载](#%E6%89%8B%E5%8A%A8%E4%B8%8B%E8%BD%BD)
|
||||
:::
|
||||
| Java 版本 | 下载链接 |
|
||||
| --------- | -------- |
|
||||
| Java 6 | [Azul Zulu Builds of OpenJDK 64位 (JDK)](https://cdn.azul.com/zulu/bin/zulu6.22.0.3-jdk6.0.119-win_x64.msi) |
|
||||
| Java 8 | [Azul Zulu Builds of OpenJDK 64位 (JRE)](https://cdn.azul.com/zulu/bin/zulu8.78.0.19-ca-jre8.0.412-win_x64.msi) |
|
||||
| Java 11 | [Azul Zulu Builds of OpenJDK 64位 (JRE)](https://cdn.azul.com/zulu/bin/zulu11.72.19-ca-jre11.0.23-win_x64.msi) |
|
||||
| Java 17 | [Azul Zulu Builds of OpenJDK 64位 (JRE)](https://cdn.azul.com/zulu/bin/zulu17.50.19-ca-jre17.0.11-win_x64.msi) |
|
||||
| Java 21 | [Azul Zulu Builds of OpenJDK 64位 (JDK)](https://cdn.azul.com/zulu/bin/zulu21.34.19-ca-jdk21.0.3-win_x64.msi) |
|
||||
|
||||
| Java 版本 | 下载链接 |
|
||||
|---------|----------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Java 8 | [Dragonwell 8](https://dragonwell.oss-cn-shanghai.aliyuncs.com/8.19.20/Alibaba_Dragonwell_Extended_8.19.20_x64_windows.zip) |
|
||||
| Java 11 | [Dragonwell 11](https://dragonwell.oss-cn-shanghai.aliyuncs.com/11.0.23.20.9/Alibaba_Dragonwell_Extended_11.0.23.20.9_x64_windows.zip) |
|
||||
| Java 17 | [Azul Zulu](https://cdn.azul.com/zulu/bin/zulu22.32.15-ca-jdk22.0.2-win_x64.zip) |
|
||||
| Java 21 | [GraalVM EE](https://download.oracle.com/graalvm/21/latest/graalvm-jdk-21_windows-x64_bin.zip) |
|
||||
|
||||
:::danger
|
||||
|
||||
@ -86,26 +88,7 @@ TODO
|
||||
https://www.java.com/zh-CN/download/
|
||||
</details>
|
||||
|
||||
### Zulu 版
|
||||
|
||||
根据各路大佬的测试 Zulu 相较 Oracle (你可以看做"公版") 更适合开 MC 服务器。
|
||||
|
||||
<details>
|
||||
<summary>怎么找到官网并从官网下载</summary>
|
||||
|
||||
![](_images/Zulu-1.png)
|
||||
|
||||
往下翻,找到这个,选择你想要的版本:
|
||||
|
||||
![](_images/Zulu-2.png)
|
||||
|
||||
找到 64-bit (64位) (如果你的电脑是32位的,建议不开服):
|
||||
|
||||
![](_images/Zulu-3.png)
|
||||
|
||||
如果您不能安装此软件(如不兼容),请关闭此文档,且**不要向**文档编写者们提问,感谢。
|
||||
</details>
|
||||
|
||||
如果你想进行 JVM 优化,请看[JVM优化](/docs-java/process/maintenance/optimize/jvm/jvm.md)
|
||||
|
||||
## 验证 Java 安装
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user