【JVM进阶之路】十:JVM调优总结 (2)

Jdk7版本的主要参数

参数名称 含义 默认值
-XX:PermSize   设置持久代     Jdk7版本及以前版本  
-XX:MaxPermSize   设置最大持久代     Jdk7版本及以前版本  

Jdk8版本的重要特有参数

参数名称 含义 默认值
-XX:MetaspaceSize   元空间大小     Jdk8版本  
-XX:MaxMetaspaceSize   最大元空间     Jdk8版本  
5.2、并行收集器相关参数 参数名称 含义 默认值
-XX:+UseParallelGC   Full GC采用parallel MSC (此项待验证)     选择垃圾收集器为并行收集器.此配置仅对年轻代有效.即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集.(此项待验证)  
-XX:+UseParNewGC   设置年轻代为并行收集     可与CMS收集同时使用 JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值  
-XX:ParallelGCThreads   并行收集器的线程数     此值最好配置与处理器数目相等 同样适用于CMS  
-XX:+UseParallelOldGC   年老代垃圾收集方式为并行收集(Parallel Compacting)     这个是JAVA 6出现的参数选项  
-XX:MaxGCPauseMillis   每次年轻代垃圾回收的最长时间(最大暂停时间)     如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值.  
-XX:+UseAdaptiveSizePolicy   自动选择年轻代区大小和相应的Survivor区比例     设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开.  
-XX:GCTimeRatio   设置垃圾回收时间占程序运行时间的百分比     公式为1/(1+n)  
-XX:+ScavengeBeforeFullGC   Full GC前调用YGC   true   Do young generation GC prior to a full GC. (Introduced in 1.4.1.)  
5.3、CMS相关参数 参数名称 含义 默认值
-XX:+UseConcMarkSweepGC   使用CMS内存收集     测试中配置这个以后,-XX:NewRatio=4的配置失效了,原因不明.所以,此时年轻代大小最好用-Xmn设置.???  
-XX:+AggressiveHeap       试图是使用大量的物理内存 长时间大内存使用的优化,能检查计算资源(内存, 处理器数量) 至少需要256MB内存 大量的CPU/内存, (在1.4.1在4CPU的机器上已经显示有提升)  
-XX:CMSFullGCsBeforeCompaction   多少次后进行内存压缩     由于并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片",使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理.  
-XX:+CMSParallelRemarkEnabled   降低标记停顿      
-XX+UseCMSCompactAtFullCollection   在FULL GC的时候, 对年老代的压缩     CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。 可能会影响性能,但是可以消除碎片  
-XX:+UseCMSInitiatingOccupancyOnly   使用手动定义初始化定义开始CMS收集     禁止hostspot自行触发CMS GC  
-XX:CMSInitiatingOccupancyFraction=70   使用cms作为垃圾回收 使用70%后开始CMS收集   92   为了保证不出现promotion failed(见下面介绍)错误,该值的设置需要满足以下公式CMSInitiatingOccupancyFraction计算公式  
-XX:CMSInitiatingPermOccupancyFraction   设置Perm Gen使用到达多少比率时触发   92    
-XX:+CMSIncrementalMode   设置为增量模式     用于单CPU情况  
-XX:+CMSClassUnloadingEnabled        
5.4、辅助信息 参数名称 含义 默认值
-XX:+PrintGC       输出形式: [GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs]  
-XX:+PrintGCDetails       输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]  
-XX:+PrintGCTimeStamps        
-XX:+PrintGC:PrintGCTimeStamps       可与-XX:+PrintGC -XX:+PrintGCDetails混合使用 输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]  
-XX:+PrintGCApplicationStoppedTime   打印垃圾回收期间程序暂停的时间.可与上面混合使用     输出形式:Total time for which application threads were stopped: 0.0468229 seconds  
-XX:+PrintGCApplicationConcurrentTime   打印每次垃圾回收前,程序未中断的执行时间.可与上面混合使用     输出形式:Application time: 0.5291524 seconds  
-XX:+PrintHeapAtGC   打印GC前后的详细堆栈信息      
-Xloggc:filename   把相关日志信息记录到文件以便分析. 与上面几个配合使用      
-XX:+PrintClassHistogram   garbage collects before printing the histogram.      
-XX:+PrintTLAB   查看TLAB空间的使用情况      
XX:+PrintTenuringDistribution   查看每次minor GC后新的存活周期的阈值     Desired survivor size 1048576 bytes, new threshold 7 (max 15) new threshold 7即标识新的存活周期的阈值为7。  
6、主要工具 6.1、JDK工具

JDK自带了很多性能监控工具,我们可以用这些工具来监测系统和排查内存性能问题。

JDK自带工具

6.2、Linux 命令行工具

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzfx.html