Java启动参数共分为三类;
- 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
- 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;
- 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;
-Xms10m
设置堆最小值为10M
-Xmx10m
设置堆最大值为10M
-Xmn10m
设置年轻代大小为10M
-XX:+PrintGCDetails
打印GC的具体信息
-XX:+HeapDumpOnOutOfMemoryError
OOM时导出堆到文件
-XX:HeapDumpPath=d:/a.dump
dump出来的数据存放在D盘下a.dump中
-XX:OnOutOfMemoryError=D:/printstack.bat %p
%p代表的是当前java进程的pid ,当发生内存溢出的时候执行printstack.bat这个脚本,通常可以用作线上内存溢出的报警机制,比如发短信或者邮件通知
-XX:loggc:D:/a.log
将jvm的日志存储到指定文件
-XX:NewRatio=3
设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=8
年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:8,表示Eden:Survivor=8:1,一个Survivor区占整个年轻代的1/10
-XX:PretenureSizeThreshold=3M
对象的大小大于3M时将直接进入老年代
-XX:-HandlePromotionFailure
在发送Minor GC之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代对象总空间,如果这个条件成立,那么Minor GC可用确保是安全的,如果不成立,则虚拟机会查看HandlePromotionFailure设置值是否允许担保失败,如果允许,会继续检查之前历次Minor GC中晋升到老年代的平均对象大小是否<老年代最大可用的连续空间,如果小于,将尝试进行一次Minor GC,尽管这次GC是有风险的,如果大于或者HandlePromotionFailure设置不允许冒险,那么这时要进行一次Full GC
-verbose
-verbose:class 输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。
-verbose:gc 输出每次GC的相关情况。
-verbose:jni 输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
-XX:+UseBiasedLocking
启用偏向锁
-XX:BiasedLockingStartupDelay = 0
配合-XX:+UseBiasedLocking参数使用,一般启动偏向锁默认是应用程序启动几秒钟之后才激活,设置为0则是关闭延迟