ApliNi
[GC]/ Ipacamod

为服务器编写的启动参数, 已更新G1GC和ShenandoahGC. 测试中, 不保证稳定
[这个MD的样式好难看啊]


## G1GC
如果下方的SGC参数占用的CPU太多, 可以尝试使用这个. 它基于Aikar的参数

  1. GC
  2. -XX:+UseG1GC 使用G1GC
  3. -XX:+ParallelRefProcEnabled 尽可能启用并行引用处理 缓存
  4. -XX:MaxGCPauseMillis=200 预期GC最大占用时间 毫秒
  5. -XX:G1MixedGCCountTarget=4 设置并发周期后需要执行多少次混合收集
  6. -XX:G1MixedGCLiveThresholdPercent=90 控制何时在新的GC集合中包含混合GC % [90%尽可能快地回收旧代中的垃圾]
  7. -XX:G1RSetUpdatingPauseTimePercent=5 如果减小这个值, G1会并发的做更多的更新RS的工作
  8. -XX:MaxTenuringThreshold=1 新生代经过多少次GC晋升为老年代中的最大阈值
复制代码

  1. 内存
  2. -Xms16G -Xmx16G #堆栈大小
  3. -XX:+AlwaysPreTouch -XX:-ZUncommit 分配连续的内存并在启动时保留, 阻止jvm释放内存给系统
  4. -XX:+UseLargePages 启用大页面内存
  5. [LINUX] -XX: UseTransparentHugePages 透明大页面, 提高大堆的性能
  6. -XX:G1NewSizePercent=40 为新生代指定总体所需范围 %
  7. -XX:G1MaxNewSizePercent=50 新生代最大值 %
  8. -XX:G1HeapRegionSize=16M Region的大小?
  9. -XX:G1ReservePercent=15 老年代预留多少空间为新生代对象晋升 %
  10. -XX:G1HeapWastePercent=5 释放出的Region占整个堆空间多少时停止混合回收 %
  11. -XX:InitiatingHeapOccupancyPercent=20 启动并发GC周期的整个堆占用 %
  12. -XX:SurvivorRatio=32 设置Eden区的占比 %
  13. -XX:+PerfDisableSharedMem 将匿名内存用于性能计数器 [禁止写统计文件]
复制代码

  1. 其他
  2. -XX:+UnlockExperimentalVMOptions 启用实验性选项
  3. -XX:+DisableExplicitGC 防止代码调用GC
  4. -Dusing.aikars.flags=https://mcflags.emc.gs
  5. -Daikars.new.flags=true

  6. [系统支持] -XX:+UseNUMA
  7. -XX:ReservedCodeCacheSize=512M 代码缓存大小
  8. -XX:MaxInlineSize=256 方法内联条件 小于此值进行内联
  9. -XX:+OmitStackTraceInFastThrow 省略异常栈信息从而快速抛出
  10. -XX:+UseBiasedLocking 开启偏向锁

  11. --add-modules=jdk.incubator.vector
复制代码


  1. -server -Xms16G -Xmx16G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:MaxTenuringThreshold=1 -XX:+AlwaysPreTouch -XX:-ZUncommit -XX:+UseLargePages -XX:G1NewSizePercent=40 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:G1HeapWastePercent=5 -XX:InitiatingHeapOccupancyPercent=20 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:+DisableExplicitGC -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -XX:ReservedCodeCacheSize=512M -XX:MaxInlineSize=256 -XX:+OmitStackTraceInFastThrow -XX:+UseBiasedLocking --add-modules=jdk.incubator.vector -jar
复制代码







## [] 注意, SGC比G1GC更占用CPU
此参数将尽可能的减少GC次数以及降低GC时间, 但不保证CPU占用低

  1. GC
  2. -XX:+UseShenandoahGC 启用SGC
  3. [暂时禁用] -XX:ShenandoahGCMode=iu [可能影响CPU]
  4. -XX:GCTimeRatio=98 应用程序运行时间百分比[与GC] 给GC更多时间_减少GC次数
  5. -XX:ConcGCThreads=1 单线程GC, SGC的速度足够快
  6. -XX:+ParallelRefProcEnabled 尽可能启用并行引用处理 缓存
  7. -XX:+DisableExplicitGC 忽略代码中的 System.gc() 调用 防止插件调用GC
复制代码


  1. 内存
  2. -Xms16G -Xmx16G #堆栈大小
  3. -XX:+AlwaysPreTouch -XX:-ZUncommit 分配连续的内存并在启动时保留, 阻止jvm释放内存给系统
  4. -XX:+UseLargePages 启用大页面内存
  5. -XX:LargePageSizeInBytes=1G 内存分页
  6. [LINUX] -XX: UseTransparentHugePages 透明大页面
  7. -XX:+PerfDisableSharedMem 将匿名内存用于性能计数器
复制代码


  1. 其他
  2. [不使用] -XX:CICompilerCount=12 编译器线程数, 分层编译自动改为内核数
  3. [系统支持] -XX:+UseNUMA 若干CPU组成一个组, 组之间有点对点的通讯 [测试]
  4. -XX:ReservedCodeCacheSize=512M 代码缓存大小
  5. -XX:MaxInlineSize=256 方法内联条件 小于此值进行内联
  6. -XX:+OmitStackTraceInFastThrow 省略异常栈信息从而快速抛出
  7. -XX:+UseBiasedLocking 开启偏向锁
  8. --add-modules=jdk.incubator.vector
复制代码


  1. 临时, 不要添加
  2. -XX:+CITime JVM关闭时得到各种编译的统计信息
  3. -XX:+UnlockExperimentalVMOptions 启用实验性选项
  4. -XX:+UnlockDiagnosticVMOptions 启用诊断选项
复制代码


  1. -server -Xms16G -Xmx16G -XX:+UseShenandoahGC -XX:GCTimeRatio=98 -XX:ConcGCThreads=1 -XX:+ParallelRefProcEnabled -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:-ZUncommit -XX:+UseLargePages -XX:LargePageSizeInBytes=1G -XX:+PerfDisableSharedMem -XX:+UseNUMA -XX:ReservedCodeCacheSize=512M -XX:MaxInlineSize=256 -XX:+OmitStackTraceInFastThrow -XX:+UseBiasedLocking --add-modules=jdk.incubator.vector -jar
复制代码



mengerlvyang321
又是一篇科普贴

水稻本尊
很好,收藏了,谢谢楼主

ApliNi
这个太久没更新了, 请看这里: https://ipacel.cc/Range/?p=%E5%B ... 3%E6%96%87%E6%A1%A3

  1. -server -Xms16G -Xmx16G -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:ShenandoahGCMode=iu -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -XX:+DisableExplicitGC -XX:+UseNUMA -XX:ReservedCodeCacheSize=512M -XX:NonNMethodCodeHeapSize=16M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+UseCriticalJavaThreadPriority -XX:MaxInlineSize=256 -XX:+SegmentedCodeCache -XX:-DontCompileHugeMethods -XX:+OmitStackTraceInFastThrow -XX:ThreadPriorityPolicy=1 -XX:+TrustFinalNonStaticFields -XX:+UseFastUnorderedTimeStamps -XX:+AllowParallelDefineClass -XX:UseAVX=3 -XX:+UseFMA -XX:+UseSSE42Intrinsics -XX:+UseXmmI2D -XX:+UseXmmI2F -XX:+UseVectorCmov -XX:+UseNewLongLShift -XX:+UseFastStosb -Dlog4j2.formatMsgNoLookups=true --add-modules=jdk.incubator.vector -jar
复制代码

LIU丶寶贝
看不懂系列+1