zoukankan      html  css  js  c++  java
  • JVM调优之优化延迟

    调优延迟/响应性

    评估垃圾收集器对延迟性影响的过程中将进行下面的活动:

      1、测量Minor GC的持续时间

      2、统计Minor GC的次数

      3、测量Full GC的最差(最长)的持续时间

      4、统计最差情况下,Full GC的频率

    可能采取的活动包括:

      1、堆分析,修改应用程序,减少对象分配及对象

      2、改变JVM的部署模式,减少单个JVM负荷

    优化新生代的大小

    Minor GC 频率少,间隔时间长,修正的方法是减少新生代空间

         频率高,修正的方法就是增加新生代空间

           调整过程中,尽量保持年老代空间大小恒定

    调整新生代的几个原则

      1、老年代空间大小不应该小于活跃数据大小的1.5倍

      2、新生代空间至少应为java堆大小的10%,通过-Xmx和-Xms可以设定改值

      3、增大Java堆大小时,注意不要超过JVM可用的物理内存数

    调整新生代也无法满足系统延迟则可以修改应用程序或者改变JVM的部署模式

    如果仅仅通过监控Minor GC就能达到应用程序的延迟性要求,就可以直接进入到年老代空间的调整

    优化老年代的大小

    Full GC持续时间计算方法

      1、可以直接通过每次Full GC的间隔获得

      2、如果没有发生Full GC,可以通过多次Minor GC计算获得,根据每次Minor GC后,老年代提升的空间计算出每秒老年代提升的空间。再由老年代的总空间/老年代每秒提升的空间可以得到。

    Survivor空间的大小可以通过 -xx:survivorRtio=<ratio> 表示单个survivor空间与Eden空间的大小的比率

    survivor空间的大小=-Xmn<value>/(-xx:SurvivorRatio=<ratio>+2)

    减少survivor的比率会增大Survivor空间,同时减少Eden空间,会导致更频繁的MinorGC。垃圾收集的频率越高,对象老化的速度越快

    晋升阙值可通过-xx:maxTenuringThreshold=<n>

      指定对象的年龄通过<n>值将其提升到年老代空间

      内部计算出的晋升阙值不会超过最大晋升阙值

    设定的值是CMS垃圾收集周期在年老代空间占用达到多少百分比时启用:-xx:CMSInititiatingOccupancyFraction=65

    最好配合-xx:CMSInitiatingOccupanyOnly=<percent>同时使用

    设定的值应该大于老年代占用空间和活跃数据的大小之比

    例如

    -Xmx1536m -Xms 1536m -Xmn 512m

    -xx:CMSInitiatingOccupancyFraction=51

    -xx:+useCMSInitiatingOccupancyOnly

    永久代启动CMS  -xx:CMSInitiatingPermOccupanyFraction=<percent>

    -xx:+useCMSInitiatingOccupanyOnly

    -xx:parallelGCthreads=<n> 重新标记的线程数

      

  • 相关阅读:
    Python:Pandas的基本操作和使用
    奇技淫巧:绝佳笔记篇-wolai
    Scala:(五) 类、对象、继承、模式匹配和样例类
    tree2List
    java mybatis多层collection嵌套查询
    linux 查看目录下各个文件的大小
    Redisson使用手册
    hutool 定时任务 TimedCache
    清理Docker占用的磁盘空间
    java线程池
  • 原文地址:https://www.cnblogs.com/TingJie/p/5695318.html
Copyright © 2011-2022 走看看