JVM性能监控与调优之运行时参数
- JVM参数类型选型
- 添加JVM参数选项
(1)IDEA里进行添加
(2)运行jar包在指令窗口输入指令
例如:java -Xms50m -Xmx50m -XX:+PrintGCStamps -jar demo.jar
(3)通过tomcat运行war包
① 在Linux系统下,在tomcat/bin/catalina.sh中添加类似如下配置:JAVA_OPTS="-Xms512m -Xmx1024m"等参数
② 在Windows系统下载Catalina.bat中添加类似如下配置:set “JAVA_OPTS=-Xms512m -Xmx1024m”
(4)在程序运行中
① 使用jinfo -flag =设置非Boolean类型参数、
② 使用jinfo -flag [+ | -]设置Boolean类型参数 - 常用的JVM参数选项
(1)打印设置的XX选项及值
(2)堆栈和方法区内存大小设置
(3)OutOfMemory相关的选项
(4)垃圾收集器相关选项
① Serial回收器
-XX:+UseSerialGC:指定年轻代和老年代使用串行回收器
② ParNew回收器
-XX:+UseParNewGC:手动指定使用ParNew回收器执行内存回收任务
-XX:ParallelGCThreads=N:限制线程数量,默认开启和CPU数据相同的线程数
③ Parallel回收器
-XX:+UseParalleGC:手动指定年轻代使用Parallel并行回收器,默认jdk8开启
-XX:+UseParallelOldGC:手动指定老年代使用Parallel并行回收器
-XX:ParallelGCThreads:设置年轻代并行收集器的线程数,默认当CPU数量小于8个,值等于CPU数量,大于8个,值等于3+[5*CUP_Count]/8
-XX:MaxGCPauseMillis:设置垃圾收集器最大停顿时间
-XX:GCTimeRatio:垃圾收集时间占总时间的比例=1/(N+1)
-XX:+UseAdaptiveSizePolicy:设置收集器具有自适应调节策略
④CMS回收器
+UseConnMarkSweepGC:手动指定CMS收集器收集内存
-XX:CMSInitiatingOccupanyFraction:设置堆内存使用率的阙值,一旦达到阙值就开始进行回收
-XX:+UseCMSCompactAtFullColletion:用于指定在执行完Full GC后对内存空间进行压缩整理
-XX:ParalelCMSThreads:设置CMS的线程数量,默认线程数是(ParallelGCThre+3)/4
⑤ G1回收器
-XX:+UseG1GC:手动指定使用G1回收内存
-XX:G1HeapRegionSize:设置region的大小,值是2的幂,
-XX :MaxGCPauseMIllis:设置最大GC停顿时间指标,默认值是200ms
-XX:ParallelGCThreads:设置STW时GC线程数的值,最多为8
-XX:ConcGCThreads:设置并发标记的线程数,将值设置为ParallelGCThre的1/4左右
-XX:InitiatingHeapOccupancyPercent:设置触发并发GC周期的Java堆占用率阙值,超过此值,触发GC,默认是45
-XX:G1NewSizePercent,-XX:G1MaxNewSizePercent:新生代占用整个堆内存的最小百分比以及最大百分比
-XX:G1ReservePercent=10:保留内存区域,防止Survivor的to区溢出
(5)GC日志相关JVM参数选项的设置
(6)其他参数