jmx啓動參數html
java -jar -Dcom.sun.management.jmxremote.port=1090 \ -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false \ -Djava.rmi.server.hostname=192.168.1.116 frbao-publicity-1.0.0.jar
遠程debug啓動參數java
-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n
內存和線程棧相關參數tomcat
指定堆內存配置啓動參數:bash
-Xms128m -Xmx256m
設置永久代(Jdk8去除,替換爲metaspace)內存啓動參數:oracle
-XX:MaxPermSize=256m
指定堆內存溢出生成文件啓動參數:jvm
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/logs/hpdump.href
-HPROF: Heap and CPU 抽樣代理(JVMTI Demonstration Code)socket
java -agentlib:hprof=help
jmap生成堆內存快照命令(舉例5012爲jpid):ide
jmap -dump:format=b,file=/opt/logs/jmap5012.href -F 5012
jtack生成堆棧快照命令(舉例5012爲jpid):ui
jstack -F 5012 > jt5012.txt
GC日誌spa
啓動打印配置啓動參數:
-XX:+PrintCommandLineFlags
指定打印gc日誌啓動參數:
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/opt/logs/gc.log
開啓的GC方式爲ParallelGC(默認)
-XX:+UseParallelGC
[root@base embed-tomcat-publicity]# java -version openjdk version "1.8.0_91" OpenJDK Runtime Environment (build 1.8.0_91-b14) OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
JVM參數打印
查看默認參數設置
-XX:+PrintFlagsInitial
uintx SurvivorRatio = 8 {product} uintx NewRatio = 2 {product} bool UseParallelOldGC = true {product} bool UseSerialGC = false {product} bool UseParNewGC = false {product} bool UseConcMarkSweepGC = false {product} bool UseG1GC = false {product}
查看結果參數設置(包括默認參數和被用戶或者JVM設置的參數)
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal
查看「:=」被用戶或者JVM的參數設置
[root@base embed-tomcat-publicity]# java -XX:+PrintFlagsFinal and -XX:+PrintFlagsInitial | grep : intx CICompilerCount := 3 {product} uintx InitialHeapSize := 130023424 {product} uintx MaxHeapSize := 2065694720 {product} uintx MaxNewSize := 688390144 {product} uintx MinHeapDeltaBytes := 524288 {product} uintx NewSize := 42991616 {product} uintx OldSize := 87031808 {product} bool PrintFlagsFinal := true {product} bool UseCompressedClassPointers := true {lp64_product} bool UseCompressedOops := true {lp64_product} bool UseParallelGC := true {product}
參考資料:
Troubleshooting and Diagnostic Guide
讓咱們如今就瞭解一下新參數的輸出。以 -client 做爲參數的 -XX:+
PrintFlagsFinal
的結果是一個按字母排序的590個參數表格(注意,每一個release版本參數的數量會不同)$ java -client -XX:+PrintFlagsFinal Benchmark [Global flags] uintx AdaptivePermSizeWeight = 20 {product} uintx AdaptiveSizeDecrementScaleFactor = 4 {product} uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product} uintx AdaptiveSizePausePolicy = 0 {product}[...] uintx YoungGenerationSizeSupplementDecay = 8 {product} uintx YoungPLABSize = 4096 {product} bool ZeroTLAB = false {product} intx hashCode = 0 {product}(校對注:你能夠嘗試在命令行輸入上面的命令,親自實現下)
表格的每一行包括五列,來表示一個XX參數。第一列表示參數的數據類型,第二列是名稱,第四列爲值,第五列是參數的類別。第三列」=」表示第四列是參數的默認值,而」:=」 代表了參數被用戶或者JVM賦值了。
-Djava.rmi.server.hostname:這個是配置server的IP的,要使用server的IP最好在機器上先用hostname –i看一下IP是否是機器自己的IP,若是是127.0.0.1的話要改一下