通过JVM运行一个java程序的时候,我们通常会用java -jar xxxx.jar 的命令,我们通常都会根据情况配置很多的运行参数。
例如:
/usr/local/java/jdk1.8.0_131/bin/java -jar
-server
-XX:+HeapDumpOnOutOfMemoryError
-Djava.io.tmpdir=/data/kinyang/tmp/
-Xmx2G
-Xms2G
-XX:+DisableExplicitGC
-verbose:gc
-Xloggc:/data/kinyang/log/gc.%t.log
-XX:+PrintGCDateStamps
-XX:NewRatio=4
-Dfile.encoding=UTF-8
-Dlog.path=/data/kinyang/test/log/
/data/web/test.jar testweb
这些参数可以分为四类:
-
以
-
开头的是标准参数,所有JVM都支持,并且向后兼容例如:
-verbose:gc
-server
-
以
-X
开头的为非标准参数,绝大多数都是控制JVM的参数例如:
-Xmx2G
-Xms2G
-Xloggc:/data/kinyang/log/gc.%t.log
- 以
-XX:
开头的为非稳定参数,专门用于控制JVM行为
例如:
-XX:+UseParNewGC
-XX:CompileThreshold=10
-XX:HeapDumpPath=/data/kinyang/dump/heap/
-XX:+ 启用option,例如:-XX:+PrintGCDetails启动打印GC信息的选项,其中+号表示true,开启的意思
-XX:- 不启用option,例如:-XX:-PrintGCDetails关闭启动打印GC信息的选项,其中-号表示false,关闭的意思
-XX:= 设定option的值为数字类型,可跟单位,例如 32k, 1024m, 2g。例如:-XX:MaxPermSize=64m
-XX:= 设定option的值为字符串,例如: -XX:HeapDumpPath="/data/kinyang/dump/heap/"
- 以
-D
开头的是系统参数赋值(可以是系统默认有的参数,也可以是自己定义的参数),在程序中可以通过System.getProperty(key)获取和通过System.setProperty(key, value)进行设置
例如:
-Dfile.encoding=UTF-8
-Dlog.path=/data/kinyang/test/log/