java启动参数

java的启动参数参考。

参数分类

类别1: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;

类别2: 其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;

类别3: 其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;

标准参数

java -cp <目录和 zip/jar 文件的类搜索路径>    # 加载第3方库   使用  :   来分隔
java -classpath   # 全写形式
java -version   # 版本号查看,包括运行模式等
java -jar  demo.jar  # 运行jar包

其他参见:参考文章

运行模式

参考链接

java -version
java -Xint -version    # 解释运行
java -Xcomp -version   #强制使用编译模式
java -Xmixed -version  # 混合模式
# 强制虚拟机运行于 "编译模式"
-Xcomp
# 方法调用次数计数器阈值,它是基于计数器热点代码探测依据[Client模式=1500,Server模式=10000]
-XX:CompileThreshold=10
# 关闭方法调用次数热度衰减,使用方法调用计数的绝对值,它搭配上一配置项使用
-XX:-UseCounterDecay
# 除了热点方法,还有热点回边代码[循环],热点回边代码的阈值计算参考如下:
-XX:BackEdgeThreshold  = 方法计数器阈值[-XX:CompileThreshold] * OSR比率[-XX:OnStackReplacePercentage]
# OSR比率默认值:Client模式=933,Server模式=140
-XX:OnStackReplacePercentag=100

堆栈

堆栈的大小,会影响到java用到的系统资源。还可能会影响到性能。

-Xms<size>        设置初始 Java 堆大小
-Xmx<size>        设置最大 Java 堆大小
-Xss<size>        设置 Java 线程堆栈大小

# 示例  
java -Xms2048m -Xmx2048m -Xss128k

性能对比实验,参见snippet/comare/sum中的实验结果。

-XX:参数

参见百度文库

-Xmx6g
-Xms6g
-XX:NewRatio=1
-XX:+UseConcMarkSweepGC
-XX:MaxTenuringThreshold=6
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/export/Logs/gc.log

javap

反编译代码

查看对应的java代码,生成的具体的机器码详情。

javap -verbose Test.class


# 反编译 Hello.class
javap  -c Hello

springboot参数

1、配置文件

server.port=8088

2、java启动命令

# 应用参数的方式,   注意,必须放在myblog.jar后面
java -jar myblog.jar --server.port=8088
# 以JDK参数的方式
java -Dserver.port=8088 -jar myblog.jar

3、环境变量

Linux:
SERVER_PORT=8088 java -jar myblog.jar
Windows:
SET SERVER_PORT=8088
jar -jar myblog.jar

4、环境变量SPRING_APPLICATION_JSON

Linux:
SPRING_APPLICATION_JSON='{"server.port":8088}' java -jar myblog.jar

或
java -Dspring.application.json='{"server.port":8088}' -jar myblog.jar
或
java -jar --spring.application.json='{"server.port":8088}' myblog.jar

优先级说明:

启动命令应用参数 > 启动命令JDK参数 > 环境变量

//todo,应用程序如何能使用到上述的各种获取参数的方式呢?