iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

展開JDK工具的30天應用之旅系列 第 10

Day10-JDK查看虛擬機配置訊息工具:jinfo

  • 分享至 

  • xImage
  •  

jinfo介紹

jinfo全名:Configuration Info for Java,生成虛擬機配置訊息,也可以修改虛擬機的參數。

指令介紹

jinfo <option> <pid>

一樣可透過jinfojinfo -help查看此指令的說明資訊
https://ithelp.ithome.com.tw/upload/images/20210925/20140481BAU9mtuMgt.png
https://ithelp.ithome.com.tw/upload/images/20210925/20140481TWSoiSmX7T.png


以下為示範內容

Step.1 準備一個JinfoTest.java檔案,程式碼如下:

package Controller;

import java.util.Scanner;

public class JinfoTest{
  public static void main(String[] args) {
    System.out.println(System.getProperties()); //獲取系統引數
    Scanner scannerTest = new Scanner(System.in);
    scannerTest.next(); //等待輸入訊息
  }
}
  • 其實用前面幾篇文章的範例也可以,只是這篇的範例我讓程式運行時輸出系統參數,好讓後面我們下指令時,可以對照著看
  • 前面我原本都使用讓執行緒暫停的方式,讓我們可以下指令查看虛擬機的內容,但這篇範例改了個方式:取得使用者輸入

Step.2 將程式碼進行編譯並且執行

編譯與執行的指令說明,請參考Day4-java語言編譯器:javac & 運行工具:java (上)
https://ithelp.ithome.com.tw/upload/images/20210925/20140481BBOyUg3tup.png
可以看一下在程式碼中輸出System.getProperties()獲得的資訊內容如上圖

Step3.要進行查看jinfo前,須先知道要查看哪個HotSpot進程

故得先透過jps查看,請參考Day7-JDK查看正在運行的Java進程工具:jps
https://ithelp.ithome.com.tw/upload/images/20210925/20140481y73U8p9KdD.png
我查到我這次的進程是4413,以下示範的指令記得將4413改為欲查看的進程id喔!

Step4.帶入不同的options參數

以下依據查看修改兩大類型進行介紹:

  1. 查看

  • 不帶參數

輸出虛擬機的選項的和系統選項

jinfo 4413

https://ithelp.ithome.com.tw/upload/images/20210925/201404812rg3WpgvQQ.png
https://ithelp.ithome.com.tw/upload/images/20210925/20140481sbAgymcJHa.png

  • -sysprops

輸出系統選項 (可在程式中透過System.getProperties()取得)

jinfo -sysprops 4413

https://ithelp.ithome.com.tw/upload/images/20210925/20140481BshGnzbgxK.png

  • -flags

輸出傳遞給JVM的選項值

jinfo -flags 4413

https://ithelp.ithome.com.tw/upload/images/20210925/201404811Y2hJEuW2f.png

  • -flag <具體參數name>

輸出指定名稱的參數

jinfo -flag UseG1Gc 4413

https://ithelp.ithome.com.tw/upload/images/20210925/2014048123QWcesNBb.png

  1. 修改

注意!!要能修改的參數帶有manageable,可透過以下指令查看哪些參數可修改

java -XX:+PrintFlagsFinal -version|grep manageable 

https://ithelp.ithome.com.tw/upload/images/20210925/20140481SOrNKi04vY.png

  • -flag [+/-]<具體參數name>

增加或取消指定名稱的參數

jinfo -flag +HeapDoumpBeforeFullGC 4413

/images/emoticon/emoticon33.gif
我挑選了HeapDoumpBeforeFullGC選項作為示範

✎Step1.先進行查看HeapDoumpBeforeFullGC選項狀態>查出為-
✎Step2.進行修改為+
✎Step3.修改後查看HeapDoumpBeforeFullGC選項狀態>查出為+
✎Step4.修改為-
✎Step5.修改後查看HeapDoumpBeforeFullGC選項狀態>查出為+

https://ithelp.ithome.com.tw/upload/images/20210925/20140481Ik9bLpeL3j.png

  • -flag <name>=<value>

修改指定參數的參數值
https://ithelp.ithome.com.tw/upload/images/20210925/201404816BkkwOkImG.png


上一篇
Day9-JDK性能監控工具:jstat(下)
下一篇
Day11-JDK堆內存快照工具-jmap(一)基本應用
系列文
展開JDK工具的30天應用之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言