简介
java启动参数共分为三类
- 其一是标准参数(
-
),所有的JVM实现都必须实现这些参数的功能,而且向后兼容 - 其二是非标准参数(
-X
),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容 - 其三是非Stable参数(
-XX
),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用
调试参数
打印启动参数
可以查看默认参数
java -XX:+PrintCommandLineFlags -version
打印GC日志
不要用XX:+UseGCLogFileRotation
,这个会丢失旧的日志文件,而且重启会覆盖当前日志文件:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/GCEASY/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=20M
应该用下面这个
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/home/GCEASY/gc-%t.log
打印ClassLoader日志
这个参数会在控制台打印所有类加载/卸载信息
-XX:+TraceClassLoading -XX:+TraceClassUnloading
OOM时Dump内存
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/crashes/my-heap-dump.hprof
OOM时执行脚本(比如重启)
-XX:OnOutOfMemoryError=/scripts/restart-myapp.sh
打印JIT时间
-XX:-CITime
方法被编译时打印相关信息
-XX:-PrintCompilation
内存类
JVM设置内存的单位默认是字节(不加单位的情况下)。
也可以在大小后面增加单位,例如:
-Xmn256m
-Xmn262144k
-Xmn268435456
设置初始新生代大小
-XX:NewSize=2G(也可以是2M)
设置最大新生代大小
-XX:MaxNewSize=2G(也可以是2M)
注意:-Xmn
优先级大于-XX:NewRatio
设置Eden/Survivor比例
表示两