针对不同配置的机器(8核32GB、8核16GB、12核32GB、12核64GB),可以选择适合的垃圾回收器,并根据内存大小进行参数配置。以下是针对每种配置的具体建议:
G1 GC
8核32GB内存:
建议使用 G1 GC,并根据内存大小进行适当调整。
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=50 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:ParallelGCThreads=8 \
-XX:ConcGCThreads=8 \
-XX:G1NewSizePercent=10 \
-XX:G1MaxNewSizePercent=30 \
-XX:G1HeapRegionSize=32m \
-XX:SurvivorRatio=8 \
-Xms16g -Xmx16g
8核16GB内存:
对于内存较少的情况,建议选择 G1 GC,并适当减小堆内存大小。
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=50 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:ParallelGCThreads=8 \
-XX:ConcGCThreads=8 \
-XX:G1NewSizePercent=10 \
-XX:G1MaxNewSizePercent=30 \
-XX:G1HeapRegionSize=16m \
-XX:SurvivorRatio=8 \
-Xms8g -Xmx8g
12核32GB内存:
在更大的机器上,可以使用更大的堆内存,也建议选择 G1 GC。
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=50 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:ParallelGCThreads=12 \
-XX:ConcGCThreads=12 \
-XX:G1NewSizePercent=10 \
-XX:G1MaxNewSizePercent=30 \
-XX:G1HeapRegionSize=32m \
-XX:SurvivorRatio=8 \
-Xms24g -Xmx24g
12核64GB内存:
对于内存最大的机器,可以进一步增大堆内存大小。
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=50 \
-XX:InitiatingHeapOccupancyPercent=15 \
-XX:ParallelGCThreads=12 \
-XX:ConcGCThreads=12 \
-XX:G1NewSizePercent=10 \
-XX:G1MaxNewSizePercent=30 \
-XX:G1HeapRegionSize=32m \
-XX:SurvivorRatio=8 \
-Xms48g -Xmx48g
参数说明:
-XX:+UseG1GC:启用 G1 GC。-XX:MaxGCPauseMillis:设置最大 GC 停顿时间目标,以毫秒为单位。-XX:InitiatingHeapOccupancyPercent:设置并发标记周期的启动堆占用率阈值。-XX:ParallelGCThreads和-XX:ConcGCThreads:设置并行 GC 线程数和并发 GC 线程数。-XX:G1NewSizePercent和-XX:G1MaxNewSizePercent:设置新生代最小和最大占堆空间的百分比。-XX:G1HeapRegionSize:设置 G1 堆区域大小。-XX:SurvivorRatio:设置新生代 Eden 区和 Survivor 区的大小比例。-Xms和-Xmx:设置堆的初始大小和最大大小,以适应机器的内存配置。
根据不同机器的配置和需求,调整堆内存大小和垃圾回收器参数,可以最大化 Java 应用程序的性能。
Parallel GC
除了G1 GC之外,还有其他几种常用的垃圾回收器可供选择,具体选择取决于您的应用程序需求和机器配置。以下是针对不同配置的机器,使用其他垃圾回收器的建议:
8核32GB内存:
- Parallel GC:适用于多核机器,并且重视吞吐量的应用程序,可以通过以下参数进行配置:
-XX:+UseParallelGC -Xms16g -Xmx16g
8核16GB内存:
- Parallel GC:同样适用于多核机器,但内存较少的情况下需要适当减小堆内存大小。
-XX:+UseParallelGC -Xms8g -Xmx8g
12核32GB内存:
- Parallel GC:依然适用于多核机器,可以通过以下参数进行配置:
-XX:+UseParallelGC -Xms24g -Xmx24g
12核64GB内存:
- Parallel GC:同样适用于多核机器,可以通过以下参数进行配置:
-XX:+UseParallelGC -Xms48g -Xmx48g
参数说明:
-XX:+UseParallelGC:启用 Parallel GC。-Xms和-Xmx:设置堆的初始大小和最大大小,以适应机器的内存配置。
这些是针对不同机器配置的建议,使用 Parallel GC 可以在多核机器上实现较高的吞吐量。根据您的具体需求和机器配置,选择合适的垃圾回收器和参数设置,以最大化 Java 应用程序的性能。
ZGC
使用 Z Garbage Collector(ZGC),它是 JDK 11 引入的一种低延迟、可扩展的垃圾回收器。ZGC专注于提供非常低的停顿时间,并在大内存环境下表现良好。
以下是针对不同配置的机器,使用 ZGC 的建议:
8核32GB内存:
-XX:+UnlockExperimentalVMOptions \
-XX:+UseZGC \
-Xms16g -Xmx16g
8核16GB内存:
-XX:+UnlockExperimentalVMOptions \
-XX:+UseZGC \
-Xms8g -Xmx8g
12核32GB内存:
-XX:+UnlockExperimentalVMOptions \
-XX:+UseZGC \
-Xms24g -Xmx24g
12核64GB内存:
-XX:+UnlockExperimentalVMOptions \
-XX:+UseZGC \
-Xms48g -Xmx48g
参数说明:
-XX:+UnlockExperimentalVMOptions:启用实验性的虚拟机选项,因为 ZGC 在 JDK 11 中仍处于实验阶段。-XX:+UseZGC:启用 ZGC。
请注意,ZGC在 JDK 11 中被引入为实验性特性,并且在后续的 JDK 版本中可能会有所改进和优化。在生产环境中使用 ZGC 时,请确保测试和监控其性能和稳定性,以确保符合您的需求。