JVM參數---經常使用參數配置

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

JVM實用參數(八)GC日誌

JVM實用參數(三)打印全部XX參數及值

讓咱們如今就瞭解一下新參數的輸出。以 -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賦值了。

jmx遠程訪問關鍵設置

-Djava.rmi.server.hostname:這個是配置server的IP的,要使用server的IP最好在機器上先用hostname –i看一下IP是否是機器自己的IP,若是是127.0.0.1的話要改一下

深刻理解Linux修改hostname

相關文章
相關標籤/搜索