0
点赞
收藏
分享

微信扫一扫

JVM调优 -- CMS模式

minute_5 2022-01-26 阅读 82

JVM调优 – CMS模式

配置

  • JAVA_OPTS中添加如下配置
-XX:NewRatio=1 
-XX:+UseConcMarkSweepGC
-XX:+UseCMSCompactAtFullCollection 
-XX:CMSInitiatingOccupancyFraction=80 
-XX:+CMSParallelRemarkEnabled
-XX:SoftRefLRUPolicyMSPerMB=0

参数说明

-XX:NewRatio=1

  • 并发收集适用于响应优先的服务器,保证系统的响应时间,减少垃圾收集时的停顿时间
  • JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值
    该参数可能会导致-XX:NewRatio的配置失效

-XX:+UseCMSCompactAtFullCollection

  • 由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。
  • 该参数是打开对年老代的压缩。可能会影响性能,但是可以消除碎片。
    • 辅助参数:
      • -XX:CMSFullGCsBeforeCompaction=5
      • 此值设置运行多少次GC以后对内存空间进行压缩、整理。

-XX:CMSInitiatingOccupancyFraction=80

  • 该参数值是指设定CMS在对内存占用率达到80%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);
    • 辅助参数:
      • -XX:+UseCMSInitiatingOccupancyOnly
      • 这两个设置一般配合使用,一般用于“降低CMS GC频率或者增加频率、减少GC时长”的需求

-XX:+CMSParallelRemarkEnabled

  • CMS使用的是两次短暂停的标记整理算法,它的收集周期是:
  • 初始标记(CMS-initial-mark)
  • 并发标记(CMS-concurrent-mark)
  • 重新标记(CMS-remark)
  • 并发清除(CMS-concurrent-sweep)
  • 并发重设状态等待下次CMS的触发(CMS-concurrent-reset)
  • 其中的1,3两个步骤需要暂停所有的应用程序线程的
  • 该参数是用来减少第二次暂停的时间配置

-XX:SoftRefLRUPolicyMSPerMB=0

  • 引申:
    • 除了强引用外,Java还引入了SoftReference,WeakReference,PhantomReference,FinalReference
    • Java额外引入这个四种类型引用主要目的是在jvm 在gc时,按照引用类型的不同,在回收时采用不同的逻辑。
    • 这几种类型的引用主要在jvm内存缓存、资源释放、对象可达性事件处理等场景会用到。
举报

相关推荐

0 条评论