GC 参数

  1. -Xms2048m 初始堆大小
  2. -Xmx2048m 最大堆大小
  3. -Xss:1024k 设置每个线程堆栈大小,设置每个线程的堆栈大小。
    JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。
    更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
  4. -XX:NewSize=n 设置年轻代大小
  5. -XX:NewRatio=2 设置年轻代和年老代的比值。
  6. -XX:SurvivorRatio=8 年轻代中Eden区与两个Survivor区的比值Eden:S1:S2 = 8:1:1 Eden:Survivor = 8 : 2
  7. -XX:MaxPermSize=64m 设置持久代大小,持久代一般固定大小为64m
  8. -XX:MaxMetaspaceSize=512m 元空间大小
  9. -XX:MetaspaceSize=512m 最大元空间大小

GC:

  1. -XX:+PrintGC 打印GC
  2. -XX:+PrintGCDetails 打印GC,格式不一样,详细
  3. -XX:+PrintGCTimeStamps PrintGCTimeStamps可与上面两个混合使用
  4. -XX:+PrintHeapAtGC 打印GC前后的详细堆栈信息
  5. -Xloggc:D:/temp/gclog/idea.gc.log 与上面几个配合使用,把相关日志信息记录到文件以便分析

垃圾收集器:

  1. -XX:+UseSerialGC:设置串行收集器
  2. -XX:+UseParallelGC:设置并行收集器
  3. -XX:+UseParalledlOldGC:设置并行年老代收集器
  4. -XX:+UseConcMarkSweepGC:设置并发收集器
  5. -XX:InitialBootClassLoaderMetaspaceSize=64M
  6. -XX:MaxTenuringThreshold=6 设置垃圾最大年龄,如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
  7. -XX:+UseConcMarkSweepGC
  8. -XX:CMSFullGCsBeforeCompaction=5 使用并发收集器时,开启对年老代的压缩。由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。

  9. -XX:+CMSParallelRemarkEnabled

  10. -XX:+CMSClassUnloadingEnabled

  11. -XX:+DisableExplicitGC

  12. -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
  13. -XX:ReservedCodeCacheSize=240m
  14. -XX:SoftRefLRUPolicyMSPerMB=50
    -ea
    -Dsun.io.useCanonCaches=false
    -Djava.net.preferIPv4Stack=true
    -XX:+HeapDumpOnOutOfMemoryError
    -XX:-OmitStackTraceInFastThrow