JVM探秘:jinfo查看JVM運行時參數


本系列筆記主要基於《深入理解Java虛擬機:JVM高級特性與最佳實踐 第2版》,是這本書的讀書筆記。

如何查看JVM運行時參數,對於線上JVM調優是很關鍵的,因為只有知道了當前使用的JVM參數是什么值,才能知道如何進行調優。

以下JVM參數,可以用來打印JVM運行時參數及它們的值:

參數 說明
-XX:+PrintFlagsInitial 查看初始值
-XX:+PrintFlagsFinal 查看最終的值,因為初始值有可能被修改
-XX:+UnlockExperimentalVMOptions 解鎖實驗參數,JVM中有些實驗參數無法直接賦值,必須先使用此參數才能賦值
-XX:+UnlockDiagnosticVMOptions 解鎖診斷參數
-XX:+PrintCommandLineFlags 打印命令行參數

例如,使用PrintFlagsFinal命令查看JVM參數

java -XX:+PrintFlagsFinal -version

部分輸出內容如下:

image

其中,"="表示的是初始值,":="表示的是修改過后的值。
這條命令查看的是執行java命令的當前進程,正式使用中,通常我們查看的是線上的Java程序進程,這時,就會用到JDK命令行工具:jpsjinfo

所有的JDK工具都可以在Oracle官網的 Java Tools Reference 文檔中找到使用說明,這是主要參考。

jps

JDK自帶了一些命令行工具,其中jps和Linux命令ps一樣,都是查看進程的,不過jps只用來查看Java進程。

格式:jps [ options ] [ hostid ]

查看jps的幫助信息:

image

使用jps命令查看本地Java進程:

image

輸出Bootstrap的是Tomcat進程,可以使用jps -l輸出包路徑來確認:

image

使用jps -v查看更多的參數:

image

jinfo

jinfo命令用來查看JVM的配置信息。

格式:
jinfo [ option ] pid
jinfo [ option ] executable core
jinfo [ option ] [ servier-id ] remote-hostname-or-IP

查看jinfo的幫助信息:

image

使用jinfo -flag [參數] [pid]查看Java堆的最大值:

image

查看是否使用了G1或者Parallel的收集器:

image

使用jinfo -flags [pid]查看所有修改過的參數值:

image

總結

先通過jps命令找到要查看的Java進程,再使用jinfo命令就可以查看指定Java程序的運行時參數了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM