jvm 性能調優工具之 jinfo
概述
jinfo 是 JDK 自帶的命令,可以用來查看正在運行的 java 應用程序的擴展參數,包括Java System屬性和JVM命令行參數;也可以動態的修改正在運行的 JVM 一些參數。當系統崩潰時,jinfo可以從core文件裏面知道崩潰的Java應用程序的配置信息
jinfo 用法
test@testprob3:/home/test/LogFiles/OSBDomain/servers/osb_server7$ jinfo
Usage:
jinfo [option] <pid>
(to connect to running process)
jinfo [option] <executable <core>
(to connect to a core file)
jinfo [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
-flag <name> to print the value of the named VM flag
-flag [+|-]<name> to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags to print VM flags
-sysprops to print Java system properties
<no option> to print both of the above
-h | -help to print this help message
參數說明
option
Javacore 概述
Javacore,也可以稱爲“threaddump”或是“javadump”,它是 Java 提供的一種診斷特性,能夠提供一份可讀的當前運行的 JVM 中線程使用情況的快照。即在某個特定時刻,JVM 中有哪些線程在運行,每個線程執行到哪一個類,哪一個方法。
應用程序如果出現不可恢復的錯誤或是內存泄露,就會自動觸發 Javacore 的生成。
示例一: no option
命令:jinfo pid
描述:輸出當前 jvm 進程的全部參數和系統屬性
示例二: -flag name
命令:jinfo -flag name pid
描述:輸出對應名稱的參數
使用該命令,可以查看指定的 jvm 參數的值。如:查看當前 jvm 進程是否開啓打印 GC 日誌。
示例三:-flag [+|-]name
命令:jinfo -flag [+|-]name pid
描述:開啓或者關閉對應名稱的參數
使用 jinfo 可以在不重啓虛擬機的情況下,可以動態的修改 jvm 的參數。尤其在線上的環境特別有用。
使用如下:
示例四:-flag name=value
命令:jinfo -flag name=value pid
描述:修改指定參數的值。
同示例三,但示例三主要是針對 boolean 值的參數設置的。
如果是設置 value值,則需要使用 name=value 的形式。
使用如下:
注意事項 :
jinfo雖然可以在java程序運行時動態地修改虛擬機參數,但並不是所有的參數都支持動態修改
示例五: -flags
命令:jinfo -flags pid
描述:輸出全部的參數
示例六:-sysprops
命令:jinfo -sysprops pid
描述:輸出當前 jvm 進行的全部的系統屬性
源文檔 <https://www.jianshu.com/p/8d8aef212b25>
no option 輸出全部的參數和系統屬性
-flag name 輸出對應名稱的參數
-flag [+|-]name 開啓或者關閉對應名稱的參數
-flag name=value 設定對應名稱的參數
-flags 輸出全部的參數
-sysprops 輸出系統屬性
[server-id@]remote server IP or hostname 遠程的ip或者hostname,server-id標記服務的唯一性id
pid 對應jvm的進程id
executable core 產生core dump文件