-Xms<heap size>[unit]
初始化堆内存时指定的最小堆内存大小 unit为单位,分别为G(GB) M(MB) K(KB)
-Xmx<heap size>[unit]
初始化堆内存时指定的最大堆内存大小
-Xmn
新生代最大值 或者 -XX:MaxNewSize=512m
-XX:NewSize=512m
设置新生代值
-XX:PermSize=128m
永久代初始值
-XX:PermSize=128m
永久代最大值
-Xss256k
或 -XX:ThreadStackSize=256k
线程栈最大值
-XX:NewRatio=4
新生代(eden+2*Survivor)和老年代(不包含永久区)的比值
例如:-XX:NewRatio=4,表示新生代:老年代=1:4,即新生代占整个堆的1/5。在Xms=Xmx并且设置了Xmn的情况下,该参数不需要进行设置。一般情况下,不允许-XX:Newratio值小于1,即Old要比Yong大。
-XX:SurvivorRatio=6
eden区和survivor的比值。假如设为6,则表示每个survivor区跟eden区的比值为1:6,每个survivor区占新生代的八分之一
-XX:PretenureSizeThreshold=1000000
可以在新生代直接分配的对象最大值,0表示没有最大值。设置该参数,可以使大于这个值的对象直接在老年代分配,避免在Eden区和Survivor区发生大量的内存复制,该参数只对Serial和ParNew收集器有效,Parallel Scavenge并不认识该参数
-XX:MaxTenuringThreshold=10
每个对象在坚持过一次Minor GC之后,年龄就增加1,当超过这个参数值时就进入老年代,最大支持15
-XX:+UseG1GC
使用G1垃圾收集器
-XX:MaxGCPauseMillis=200
设置最大GC停顿时间(GC pause time)指标(target). 这是一个软性指标(soft goal), JVM 会尽力去达成这个目标. 所以有时候这个目标并不能达成. 默认值为 200 毫秒.
-XX:InitiatingHeapOccupancyPercent=45
启动并发GC时的堆内存占用百分比. G1用它来触发并发GC周期,基于整个堆的使用率,而不只是某一代内存的使用比例。值为 0 则表示“一直执行GC循环)'. 默认值为 45 (例如, 全部的 45% 或者使用了45%).
-Xloggc
GC日志文件路径
-XX:+HeapDumpOnOutOfMemoryError
抛出内存溢出错误时导出堆信息到指定文件
-XX:HeapDumpPath=/data/dump/jvm.dump
当HeapDumpOnOutOfMemoryError开启的时候,dump文件的保存路径,默认为工作目录下的java_pid<pid>.hprof文件
-server
服务端模式
-XX:+TieredCompilation
启用多层编译
-XX:+PrintGCDetails
GC时打印更多详细信息
-XX:+PrintGCDateStamps
GC时打印时间戳信息
-XX:+PrintTenuringDistribution
打印存活实例年龄信息
-XX:+PrintGCApplicationStoppedTime
打印应用暂停时间
-XX:+PrintHeapAtGC
GC前后打印堆区使用信息
Java启动参数分为三种:
1.标准参数(-)
2.非标准参数(-X)
3.非Stable参数(-XX)
-classpath
-cp
告知jvm搜索目录名、jar文档名、zip文档名,之间用分号;分隔;使用-classpath后jvm将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则jvm使用当前路径(.)作为类搜索路径。
jvm搜索类的方式和顺序为:Bootstrap,Extension,User。
Bootstrap中的路径是jvm自带的jar或zip文件,jvm首先搜索这些包文件,用System.getProperty(“sun.boot.class.path”)可得到搜索路径。
Extension是位于JRE_HOME/lib/ext目录下的jar文件,jvm在搜索完Bootstrap后就搜索该目录下的jar文件,用System.getProperty(“java.ext.dirs”)可得到搜索路径。
User搜索顺序为当前路径.、CLASSPATH、-classpath,jvm最后搜索这些目录,用System.getProperty(“java.class.path”)可得到搜索路径。
-jar
指定以jar包的形式执行一个应用程序, 要这样执行一个应用程序,必须让jar包的manifest文件中声明初始加载的Main-class
-verbose
-verbose:class
输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。
-verbose:gc
输出每次GC的相关情况。
-verbose:jni
输出native方法调用的相关情况,一般用于诊断jni调用错误信息。