想要调优,你不得不知道的一些参数
参数名称 | 含义 |
---|
-Xms | 初始堆大小 |
-Xmx | 最大堆大小 |
-Xmn | 年轻代大小 |
-XX:NewSize | 设置年轻代大小 |
-XX:MaxNewSize | 年轻代最大值(for 1.3/1.4) |
-XX:PermSize | 设置持久代(perm gen)初始值 |
-XX:MaxPermSize | 设置持久代最大值 |
-Xss | 每个线程的堆栈大小 |
-XX:ThreadStackSize | Thread Stack Size |
-XX:NewRatio | 年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久 |
-XX:SurvivorRatio | Eden区与Survivor区的大小比值 |
-XX:LargePageSizeInBytes | 内存页的大小不可设置过大, 会影响Perm的大小 |
-XX:+UseFastAccessorMethods | 原始类型的快速优化 |
-XX:+DisableExplicitGC | 关闭System.gc() |
-XX:MaxTenuringThreshold | 垃圾最大年龄 |
-XX:+AggressiveOpts | 加快编译 |
-XX:+UseBiasedLocking | 锁机制的性能改善 |
-Xnoclassgc | 禁用垃圾回收 |
-XX:SoftRefLRUPolicyMSPerMB | 每兆堆空闲空间中SoftReference的存活时间 |
-XX:PretenureSizeThreshold | 对象超过多大是直接在旧生代分配 |
-XX:TLABWasteTargetPercent | TLAB占eden区的百分比 |
-XX:+CollectGen0First | FullGC时是否先YGC |
名称 | 含义 |
---|
-XX:+UseParallelGC Full | GC采用parallel MSC |
-XX:+UseParNewGC | 设置年轻代为并行收集 |
-XX:ParallelGCThreads | 并行收集器的线程数 |
-XX:+UseParallelOldGC | 年老代垃圾收集方式为并行收集 |
-XX:MaxGCPauseMillis | 每次年轻代垃圾回收的最长时间 |
-XX:+UseAdaptiveSizePolicy | 自动选择年轻代区大小和相应的Survivor区比例 |
-XX:GCTimeRatio | 设置垃圾回收时间占程序运行时间的百分比 |
-XX:+ScavengeBeforeFullGC Full | GC前调用YGC |
名称 | 含义 |
---|
-XX:+UseConcMarkSweepGC | 使用CMS内存收集 |
-XX:CMSFullGCsBeforeCompaction | 多少次后进行内存压缩 |
-XX:+CMSParallelRemarkEnabled | 降低标记停顿 |
-XX+UseCMSCompactAtFullCollection | 在FULLGC的时候,对年老代的压缩 |
-XX:+UseCMSInitiatingOccupancyOnly | 使用手动定义初始化定义开始CMS收集 |
-XX:CMSInitiatingOccupancyFraction=70 | 使用cms作为垃圾回收使用70%后开始CMS收集 |
-XX:CMSInitiatingPermOccupancyFraction | 设置PermGen使用到达多少比率时触发 |
-XX:+CMSIncrementalMode | 设置为增量模式 |
名称 | 含义 |
---|
-XX:+PrintGC | 打印gc |
-XX:+PrintGCDetails | gc详情 |
-XX:+PrintGCApplicationStoppedTime | 打印垃圾回收期间程序暂停的时间.可与上面混合使用 |
-XX:+PrintGCApplicationConcurrentTime | 打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用 |
-XX:+PrintHeapAtGC | 打印GC前后的详细堆栈信息 |
-Xloggc:filename | 把相关日志信息记录到文件以便分析.与上面几个配合使用 |
-XX:+PrintClassHistogram | garbage collects before printing the histogram. |
-XX:+PrintTLAB | 查看TLAB空间的使用情况 |
-XX:+PrintTenuringDistribution | 查看每次minor GC后新的存活周期的阈值 |
执行启动设置Jvm参数的操作
nohup java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn512m -Xss512k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC daishu-1.0.jar &
扛住百万pv的配置
-Xmx4000M
-Xms4000M
-Xmn600M
-XX:PermSize=500M
-XX:MetaspaceSize=500M(这里注意jdk8用这个)
-XX:MaxPermSize=500M
-XX:MaxMetaspaceSize=500M(这里注意jdk8用这个)
-Xss256K
-XX:+DisableExplicitGC
-XX:SurvivorRatio=1
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSClassUnloadingEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:SoftRefLRUPolicyMSPerMB=0
-XX:+PrintClassHistogram
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-Xloggc:log/gc.log