如何查看JVM運行時參數,對於線上JVM調優是很關鍵的,因為只有知道了當前使用的JVM參數是什么值,才能知道如何進行調優。
以下JVM參數,可以用來打印JVM運行時參數及它們的值:
參數說明-XX:+PrintFlagsInitial查看初始值 -XX:+PrintFlagsFinal查看最終的值,因為初始值有可能被修改 -XX:+UnlockExperimentalVMOptions解鎖實驗參數,JVM中有些實驗參數無法直接賦值,必須先使用此參數才能賦值 -XX:+UnlockDiagnosticVMOptions解鎖診斷參數 -XX:+PrintCommandLineFlags打印命令行參數
例如,使用PrintFlagsFinal命令查看JVM參數
Copyjava -XX:+PrintFlagsFinal -version
部分輸出內容如下:
其中,"="表示的是初始值,":="表示的是修改過后的值。
這條命令查看的是執行java命令的當前進程,正式使用中,通常我們查看的是線上的Java程序進程,這時,就會用到JDK命令行工具:jps和jinfo。
所有的JDK工具都可以在Oracle官網的
Java Tools Reference 文檔中找到使用說明,這是主要參考。
jps#
JDK自帶了一些命令行工具,其中jps和Linux命令ps一樣,都是查看進程的,不過jps只用來查看Java進程。
Copy格式:jps [ options ] [ hostid ]
查看jps的幫助信息:
使用jps命令查看本地Java進程:
輸出Bootstrap的是Tomcat進程,可以使用jps -l輸出包路徑來確認:
使用jps -v查看更多的參數:
jinfo#
jinfo命令用來查看JVM的配置信息。
Copy格式:jinfo [ option ] pidjinfo [ option ] executable corejinfo [ option ] [ servier-id ] remote-hostname-or-IP
查看jinfo的幫助信息:
使用jinfo -flag [參數] [pid]查看Java堆的最大值:
查看是否使用了G1或者Parallel的收集器:
使用jinfo -flags [pid]查看所有修改過的參數值:
總結#
先通過jps命令找到要查看的Java進程,再使用jinfo命令就可以查看指定Java程序的運行時參數了。
|