一、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 

android jvm 参数设置 jvm参数在哪里设置_android jvm 参数设置

 

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

android jvm 参数设置 jvm参数在哪里设置_默认值_02

 

二、内存管理参数

1、堆栈大小设置

参数

默认值

使用介绍

示例

-Xms

堆内存的1/64

堆的最小值

-Xms1g

-Xmx

堆内存的1/4

堆的最大值

-Xmx1g

-Xss


栈的大小

-Xss1m

-XX:NewSize


堆中新生代的初始值

-XX:NewSize=512m

-XX:MaxNewSize


堆中新生代的最大值

-XX:MaxNewSize=512m

-XX:MetaspaceSize


方法区的初始值

-XX:MetaspaceSize=256m

-XX:MaxMetaspaceSize


方法区的最大值

-XX:MaxMetaspaceSize=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

-XX:MetaspaceSize=8m