8核32GB、8核16GB、12核32GB、12核64GB,GC参数

281 阅读4分钟

针对不同配置的机器(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 时,请确保测试和监控其性能和稳定性,以确保符合您的需求。