jvm 性能調(diào)優(yōu)工具之 jinfo

概述

jinfo 是 JDK 自帶的命令,可以用來查看正在運(yùn)行的 java 應(yīng)用程序的擴(kuò)展參數(shù),包括Java System屬性和JVM命令行參數(shù);也可以動(dòng)態(tài)的修改正在運(yùn)行的 JVM 一些參數(shù)。當(dāng)系統(tǒng)崩潰時(shí),jinfo可以從core文件里面知道崩潰的Java應(yīng)用程序的配置信息

jinfo 用法

參數(shù)說明

  • pid 對(duì)應(yīng)jvm的進(jìn)程id
  • executable core 產(chǎn)生core dump文件
  • [server-id@]remote server IP or hostname 遠(yuǎn)程的ip或者h(yuǎn)ostname,server-id標(biāo)記服務(wù)的唯一性id

option

  • no option 輸出全部的參數(shù)和系統(tǒng)屬性
  • -flag name 輸出對(duì)應(yīng)名稱的參數(shù)
  • -flag [+|-]name 開啟或者關(guān)閉對(duì)應(yīng)名稱的參數(shù)
  • -flag name=value 設(shè)定對(duì)應(yīng)名稱的參數(shù)
  • -flags 輸出全部的參數(shù)
  • -sysprops 輸出系統(tǒng)屬性

Javacore 概述

Javacore,也可以稱為“threaddump”或是“javadump”,它是 Java 提供的一種診斷特性,能夠提供一份可讀的當(dāng)前運(yùn)行的 JVM 中線程使用情況的快照。即在某個(gè)特定時(shí)刻,JVM 中有哪些線程在運(yùn)行,每個(gè)線程執(zhí)行到哪一個(gè)類,哪一個(gè)方法。
應(yīng)用程序如果出現(xiàn)不可恢復(fù)的錯(cuò)誤或是內(nèi)存泄露,就會(huì)自動(dòng)觸發(fā) Javacore 的生成。

示例一: no option

命令:jinfo pid
描述:輸出當(dāng)前 jvm 進(jìn)程的全部參數(shù)和系統(tǒng)屬性


示例二: -flag name

命令:jinfo -flag name pid
描述:輸出對(duì)應(yīng)名稱的參數(shù)



使用該命令,可以查看指定的 jvm 參數(shù)的值。如:查看當(dāng)前 jvm 進(jìn)程是否開啟打印 GC 日志。

示例三:-flag [+|-]name

命令:jinfo -flag [+|-]name pid
描述:開啟或者關(guān)閉對(duì)應(yīng)名稱的參數(shù)

使用 jinfo 可以在不重啟虛擬機(jī)的情況下,可以動(dòng)態(tài)的修改 jvm 的參數(shù)。尤其在線上的環(huán)境特別有用。

使用如下:


示例四:-flag name=value

命令:jinfo -flag name=value pid
描述:修改指定參數(shù)的值。

同示例三,但示例三主要是針對(duì) boolean 值的參數(shù)設(shè)置的。
如果是設(shè)置 value值,則需要使用 name=value 的形式。

使用如下:


注意事項(xiàng) :

jinfo雖然可以在java程序運(yùn)行時(shí)動(dòng)態(tài)地修改虛擬機(jī)參數(shù),但并不是所有的參數(shù)都支持動(dòng)態(tài)修改

示例五: -flags

命令:jinfo -flags pid
描述:輸出全部的參數(shù)


示例六:-sysprops

命令:jinfo -sysprops pid
描述:輸出當(dāng)前 jvm 進(jìn)行的全部的系統(tǒng)屬性


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容