优量化目标
调整JVM调优参数,包括内存,延迟,吞吐量
观察调优前后的差异,不断分析和调整,找到最合适的参数
将这些参数应用到服务器
调优参数
语法
- -XX:+ ' +'表示启用该选项
- -XX:- '-'表示关闭该选项
- -XX:= '='给选项设置一个数字类型的值,可跟随单位,例如:m和M表示兆字节,k和K表示k字节,g和G表示千兆字节
参数示例
-Xms4g:设置最小堆内存大小为4g,堆内存初始大小
-Xmx4g:设置最大堆内存大小为4g,堆内存最大值
-Xmn1200m:设置年轻代大小为1200MB,增大年轻代后,将会减小老年代的大小,这个值对系统性能较大,官方推荐配置为整个堆的3/8
-Xss512K:设置每个线程的堆栈大小,JDK5.0后每个线程堆栈大小为1MB,以前为256K,值越小,能创建的线程越多
-XX:NewRatio=4:设置年轻代与老年代的比值为1:4,年轻代占整个堆栈的1/5
-XX:SurvivorRatio=8:设置年轻代中Eden区和Survivor区的比值为2:8,一个Survivor区占整个年轻代的1/10
-XX:MaxTenuringThreshold=15:设置Survivor区中对象年龄的最大值为15,超过这个值则进入老年代,如果设置为0,则年轻代不经过Survivor,直接进入老年代
-XX:+UseParNewGC:年轻代
-XX:+UseConcMarkSweepGC:老年代
常用调优参数
-Xms:初始化堆内存大小,默认为物理内存的1/64(小于1G)
-Xmx:堆内存的最大值。默认(MaxHeapFreeRation参数可以调整)空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制
-Xmn:新生代大小,包括Eden和两个Survivor区
-XX:MaxDirectMemorySize=1G:直接内存,报java.lang.OutOfMemoryError:Direct buffer memory异常时可以上调这个值
-XX:+DisableExplicitGC:禁止运行期间显示的调用System.gc()来触发full GC
-XX:CMSlnitiatingOccupancyFraction=60:老年代内存回收阈值,默认为68
-XX:ConcGCThreads=4:CMS垃圾回收器并行线程数,推荐值为CPU核心数
-XX:ParallelGCThreads=8:新生代并行收集器的线程数
-XX:MaxTenuringThreshold=10:Survivor区的最大年龄值,超过就会进入老年代