java启动参数共分为三类:

其一是规范参数(-),所有的JVM实现都必须实现这些参数的性能,而且向后兼容;

其二是非规范参数(-X),默认jvm实现这些参数的性能,然而并不保障所有jvm实现都满足,且不保障向后兼容;

其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,未来可能会随时勾销,须要谨慎应用;

规范参数
-jar
指定以 jar 包的模式执行一个应用程序。
要这样执行一个应用程序,必须让 jar 包的 manifest 文件中申明初始加载的 Main-class,当然那 Main-class 必须有 public static void main(String[]args) 办法。

-client
设置 JVM 应用 client 模式,特点是启动速度比拟快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或者PC利用开发和调试。

-server
设置 JVM 使 server 模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,实用于生产环境。在具备64位能力的 JDK 环境下将默认启用该模式,而疏忽 -client 参数。

-classpath
用来告知 JVM 搜寻目录名、jar 文档名、zip文档名,之间用分号分隔;应用 -classpath 后 JVM 将不再应用 CLASSPATH 中的类搜寻门路,如果-classpath和 CLASSPATH 都没有设置,则 JVM 应用以后门路(.)作为类搜寻门路。
JVM 搜寻类的形式和程序为:Bootstrap,Extension,User。

-Dproperty=value
设置零碎属性名/值对,运行在此 JVM 之上的应用程序可用 System.getProperty(“property”) 失去 value 的值。如果 value 中有空格,则须要用双引号将该值括起来,如-Dname="spacestring"。该参数通常用于设置零碎级全局变量值,如配置文件门路,以便该属性在程序中任何中央都可拜访。


-Xms 初始堆内存大小,默认物理内存64/1
-Xms = -XX:InitialHeapSize


-Xmx 最大堆内存,默认物理内存4/1
-Xmx = -XX:MaxHeapSize


-Xss 栈内存大小;
-Xss = -XX:ThreadStackSize
设置单个线程栈大小,个别默认512~1024kb。
单个线程栈大小跟操作系统和JDK版本都有关系


-Xmn 年老代大小


-XX:MetaspaceSize 元空间大小
元空间实质跟永恒代相似,都是对JVM标准中办法区的实现。
不过元空间与永恒代最大的区别在于:元空间并不在虚拟机中,而是应用本机内存。
因而,元空间大小仅受本地内存限度。


-XX:+PrintGCDetails 打印GC具体日志信息


-XX:SurvivorRatio 幸存者比例设置


-XX:NewRatio 新生代比例设置


-XX:MaxTenuringThreshold 进入老年代阈值设置

罕用参数:
"-XX:MetaspaceSize=128m"
"-XX:MaxMetaspaceSize=128m"
"-XX:SurvivorRatio=8"
"-Xms1024m"
"-Xmx1024m"
"-Xmn256m"
"-Xss256k"