GC 参数
- -Xms2048m 初始堆大小
- -Xmx2048m 最大堆大小
- -Xss:1024k 设置每个线程堆栈大小,设置每个线程的堆栈大小。
JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。
更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。 - -XX:NewSize=n 设置年轻代大小
- -XX:NewRatio=2 设置年轻代和年老代的比值。
- -XX:SurvivorRatio=8 年轻代中Eden区与两个Survivor区的比值Eden:S1:S2 = 8:1:1 Eden:Survivor = 8 : 2
- -XX:MaxPermSize=64m 设置持久代大小,持久代一般固定大小为64m
- -XX:MaxMetaspaceSize=512m 元空间大小
- -XX:MetaspaceSize=512m 最大元空间大小
GC:
- -XX:+PrintGC 打印GC
- -XX:+PrintGCDetails 打印GC,格式不一样,详细
- -XX:+PrintGCTimeStamps PrintGCTimeStamps可与上面两个混合使用
- -XX:+PrintHeapAtGC 打印GC前后的详细堆栈信息
- -Xloggc:D:/temp/gclog/idea.gc.log 与上面几个配合使用,把相关日志信息记录到文件以便分析
垃圾收集器:
- -XX:+UseSerialGC:设置串行收集器
- -XX:+UseParallelGC:设置并行收集器
- -XX:+UseParalledlOldGC:设置并行年老代收集器
- -XX:+UseConcMarkSweepGC:设置并发收集器
- -XX:InitialBootClassLoaderMetaspaceSize=64M
- -XX:MaxTenuringThreshold=6 设置垃圾最大年龄,如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
- -XX:+UseConcMarkSweepGC
-XX:CMSFullGCsBeforeCompaction=5 使用并发收集器时,开启对年老代的压缩。由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
-XX:+CMSParallelRemarkEnabled
-XX:+CMSClassUnloadingEnabled
-XX:+DisableExplicitGC
- -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
- -XX:ReservedCodeCacheSize=240m
- -XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow