2.JVM的参数配置

一、JVM参数类型

在生产环境中,一般情况下配置的参数有3种类型的:

  1. -X:非标准参数,不是每个虚拟机都实现了,例如-Xms2g
  2. -XX:非稳定性参数,例如-XX:NewSize=2g 
    使用方式有下面3种: 
    -XX:+<option> 开启option参数 
    -XX:-<option> 关闭option参数 
    -XX:-<option>=<value> 将option参数的值设置为value
  3. -D:用于自定义参数,设置的值可以通过System.getProperty(String name)方法获取,例如:-Dlog.dir=/data/log

通过java -h命令,可以查看所有标准参数,常见的有-D、-version、-classpath 

 
通过java -X命令,可以查看所有-X参数,常见的有-Xms、-Xmx、-Xss 

二、内存管理参数

1、堆栈大小设置

参数 默认值 使用介绍 示例
-Xms 堆内存的1/64 堆的最小值 -Xms6g
-Xmx 堆内存的1/4 堆的最大值 -Xmx6g
-Xss 栈的大小 -Xss1m
-XX:NewSize 堆中新生代的初始值 -XX:NewSize=2g
-XX:MaxNewSize 堆中新生代的最大值 -XX:MaxNewSize=4g
-XX:PermSize 方法区的初始值 -XX:PermSize=256g
-XX:MaxPermNewSize 方法区的最大值 -XX:MaxPermSize=512g
-XX:NewRatio 2 新生代和老年代的比值 -XX:NewRatio=4
(表示新生代:老年代=1:4,
即新生代占堆的1/5)
-XX:SurvivorRatio 8 新生代中surviivor区和eden区的比值 -XX:SurvivorRatio=8
(表示survivor:eden=1:8,
即一个survivor占新生代的1/10)
-XX:+HeapDumpOnOutOfMemoryError 默认关闭 发生OOM时自动dump堆转储文件  
-XX:HeapDumpPath dump文件路径 -XX:HeapDumpPath=/data/log/heapdump.bin

2、垃圾回收设置

参数 默认值 使用介绍 示例
-XX:+UseSerialGC Client模式的虚拟机默认开启 Client模式下,使用Serial+Serial Old的收集器组合进行垃圾回收  
-XX:+UseParNewGC 默认关闭 使用ParNew+Serial Old的收集器组合进行垃圾回收  
-XX:+UseParallelGC server模式的虚拟机默认开启 使用Parallel Scavenge+Serial Old的收集器组合进行垃圾回收  
-XX:+UseParallelOldGC 默认关闭 使用Parallel Scavenge+Parallel Old的收集器组合进行垃圾回收  
-XX:+UseConcMarkSweepGC 默认关闭 使用ParNew+CMS+Serial Old的收集器组合进行垃圾回收。如果CMS收集器出现Concurrent Mode Failure,则Serial Old收集器将作为后备收集器 -XX:+UseConcMarkSweepGC
-XX:ParallelCMSThreads 小于等于8个CPU时默认值为CPU的个数,多于8个时比CPU的数量少 设置GC时进行内存回收的线程数 -XX:ParallelCMSThreads=2
-XX:+PrintGCDetails 默认关闭 发生垃圾回收时打印内存回收日志  
-XX:+PrintGCTimeStamps 默认关闭 发生垃圾回收时打印回收时间  
-Xloggc 设置GC记录的文件 Xloggc:/data/log/tomcat/gc.log
-XX:+UseGCLogFileRotation 默认关闭 启用GC日志文件的自动转储  
-XX:GCLogFileSize 默认关闭 控制GC日志文件的大小 -XX:GCLogFileSize=1M

3、多线程相关参数

参数 默认值 使用介绍 示例
-XX:+UsedBiasedLocking 默认开启 是否使用偏向锁  
最后,给大家提供一个8核8G的机器常用的配置:
-Xms6g
-Xmx6g
-Xss1m -XX:NewSize=2g -XX:MaxNewSize=4g -XX:NewRatio=4g -XX:SurvivorRatio=8 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseConcMarkSweepGC -XX:ParallelCMSThreads=2 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/data/log/gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/heapdump.bin -XX:+CMSParallelRemarkEnabled -XX:+ScavengeBeforeFullGC -XX:CMSInitiatingOccupancyFraction=75

猜你喜欢

转载自www.cnblogs.com/freelymen/p/9291012.html