JVM调优参数
ParNew+CMS垃圾回收器参数
参数描述-Xms-XX:InitialHeapSizejava堆内存大小-Xmx-XX:MaxHeapSizejava堆内存最大大小-Xmnjava堆内存中新生代大小,扣除新生代剩下的就是老年代内存大小-XX:NewSize初始新生代大小-XX:MaxNewSize最大新生代大小-XX:PermSize-XX:MetaspaceSize永久代大小-XX:MaxPermSize-XX:MaxMetaspaceSize永久代最大大小-Xss每个线程的栈内存大小-XX:MaxTenuringThreshold设置新生代GC进老年代的年龄,默认是15-XX:TargetSurvivorRatio目标存活率,用于动态年龄判断,默认50%-XX:PretenureSizeThreshold大对象直接进入老年代-XX:SurvivorRatio设置eden和survivor大小比例-XX:+UseParNewGC使用ParNew垃圾回收器对新生代进行回收-XX:ParallelGCThreads设置垃圾回收器使用线程的数量,一般不要手动设置这个参数,默认跟机器核数相同就可以了-XX:CMSInitiatingOccupancyFaction设置老年代占用多少比例时触发CMS,jkd1.6里默认是92%,用来存放并发清理时新移到老年代的对象,这里面就有浮动垃圾-XX:+UseCMSInitiatingOccupancyOnly和上一个参数配套使用,如果不加这个,就只有第一次是92%,加了这个参数就可以保证每次92%的时候都进行GC-XX:+UseCMSCompactAtFullCollection这个是默认就打开了的,意思是Full GC以后要再次Stop the World,进行内存整理,避免内存碎片-XX:CMSFullGCsBeforeCompaction意思是执行多次Full GC后再执行一次内存整理,默认是0,就表示每次Full GC后都再进行一次内存整理-XX:+CMSParallelInitialMarkEnabled这个参数会在CMS初始化标记阶段开启多线程并发执行,减少STW-XX:+CMSScavengeBeforeRemark这个参数会在CMS重新标记阶段之前,先尽量进行一次Young GC-XX:+CMSParallelRemarkEnabledCMS重新标记的时候开启多线程并发执行,减少STW-XX:+DisableExplicitGC这个参数是禁止显示执行GC,不允许通过代码触发GC-XX:HeapDumpOnOutOfMemoryErrorOOM的时候自动dump一份内存快照-XX:HeapDumpPath=/usr/local/app/oom指定dump内存快照存放地址-XX:+PrintGCDetails打印详细的GC日志-XX:+PrintGCTimeStamps这个参数可以打印每次GC发生的时间-Xloggc:gc.log这个参数可以设置,将gc日志写入磁盘文件-XX:+PrintHeapAtGC在每次GC前都要GC堆的概况输出下面的参数不常用-XX:-HandlePromotionFailure新生代所有对象大小超过老年代剩余空间时会验证这个参数,决定是否比较之前进入老年代的活对象的平均大小(空间担保规则,jdk1.6之后默认开启)-XX:+TraceClassLoading追踪类加载的情况,会通过日志打印出来JVM加载了哪些类-XX:+TraceClassUnloading追踪类卸载的情况,会通过日志打印出来JVM卸载了哪些类-XX:SoftRefLRUPolicyMSPerMB代表每MB空闲内存空间可以允许SoftReference对象存活多久,默认1000(次参数一般采用默认,如果被误设为0,高负载时会导致动态代理生成的类吃掉Metaspace内存,导致原空间OOM)
G1垃圾回收器参数
参数描述-XX:UseG1GC指定使用G1垃圾回收器-XX:G1HeapRegionSize=2M指定每个Region大小,一般不指定,使用默认的(内存/2048)-XX:G1NewSizePercent指定新生代占堆内存初始百分比大小,一般使用默认值5%-XX:G1MaxNewSizePercent设置新生代占堆内存最大的百分比大小,一般使用默认值60%-XX:SurvivorRatio=8eden和survivor比例,在G1回收器中依然可以使用-XX:MaxGCPauseMills设置G1执行GC最多可以让系统停顿的时间,默认值是200ms(这个参数是G1垃圾回收器最重要的参数)-XX:MasTenuringThreshold设置进入老年代的年龄(G1也是可以使用的)-XX:InitiatingHeapOccupancyPercent设置老年代占堆内存多少比例时,触发新生代老年代混合回收,默认是45%-XX:G1MixedGCCountTarget设置一次回收过程中最后一步混合回收执行几次,默认8次-XX:G1HeapWastePercent设置空出来多少百分比的Region时,混合回收就停止执行,默认5%-XX:G1MixedGCLiveThresholdPercent设置回收Region时,存活对象低于多少百分比的Region才可以回收,默认是85%。如果内存不够了也会强制执行超过85%的Region
转载请注明原文地址:https://ipadbbs.8miu.com/read-61607.html