Java中的jinfo命令使用詳解
jinfo命令簡介
jinfo(Java Virtual Machine Configuration Information)是JDK提供的一個可以實時查看Java虛擬機各種配置參數(shù)和系統(tǒng)屬性的命令行工具。使用jps命令的-v參數(shù)可以查看Java虛擬機啟動時顯式指定的配置參數(shù),如果想查看沒有顯式指定的配置參數(shù)就可以使用jinfo命令進行查看。另外,jinfo命令還可以查詢Java虛擬機進程的System.getProperties()
的內(nèi)容。
在沒有dbgeng.dll
的Windows系統(tǒng)中,必須安裝用于Windows的調(diào)試工具才能使jinfo命令正常工作,PATH環(huán)境變量應該包含jvm.dll的位置。
jinfo命令參數(shù)
命令語法:
jinfo [option] pid
命令參數(shù)說明:
option
:jinfo命令的可選參數(shù)。如果沒有指定這個參數(shù),jinfo命令會顯示所有的配置參數(shù)和系統(tǒng)屬性。pid
:要打印配置信息的Java虛擬機的進程ID。
想要要獲取運行的Java虛擬機進程的列表,可以使用ps命令(Linux系統(tǒng)中)或tasklist命令(Windows系統(tǒng)中),如果Java虛擬機進程沒有在單獨的docker實例中運行,可以使用jps命令。
option
都有哪些參數(shù)呢?我們來看一下。
-flag name
顯示指定名稱對應的配置參數(shù),比如,查看了簡單GC日志模式(PrintGC)是否開啟:
# jinfo -flag PrintGC 15729 -XX:-PrintGC
-flag [+|-]name
啟用或禁用指定名稱的參數(shù),該參數(shù)必須為Boolean
類型。比如,開啟簡單GC日志模式:
# jinfo -flag +PrintGC 15729 # jinfo -flag PrintGC 15729 -XX:+PrintGC
比如,禁用簡單GC日志模式:
# jinfo -flag -PrintGC 15729 # jinfo -flag PrintGC 15729 -XX:-PrintGC
-flag name=value
不需要重啟Java虛擬機,修改指定名稱的參數(shù)為指定的值。比如,修改空閑堆空間的最小百分比(MinHeapFreeRatio)為30%:
# jinfo -flag MinHeapFreeRatio 15729 -XX:MinHeapFreeRatio=40 # jinfo -flag MinHeapFreeRatio=30 15729 # jinfo -flag MinHeapFreeRatio 15729 -XX:MinHeapFreeRatio=30
當然不是所有參數(shù)都可以這樣修改的,比如并發(fā)垃圾收集器將使用的線程數(shù)(ConcGCThreads):
# jinfo -flag ConcGCThreads=5 15729 Exception in thread "main" com.sun.tools.attach.AttachOperationFailedException: flag 'ConcGCThreads' cannot be changed at sun.tools.attach.LinuxVirtualMachine.execute(LinuxVirtualMachine.java:229) at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:261) at sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:234) at sun.tools.jinfo.JInfo.flag(JInfo.java:134) at sun.tools.jinfo.JInfo.main(JInfo.java:81)
那么,有哪些配置參數(shù)是支持動態(tài)修改的呢?我們可以通過java -XX:+PrintFlagsInitial
命令找到標記為manageable
的配置參數(shù),運行結果如下圖所示:
-flags
顯示全部的配置參數(shù),比如:
# jinfo -flags 15729 Attaching to process ID 15729, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.251-b08 Non-default VM flags: -XX:CICompilerCount=4 -XX:ConcGCThreads=2 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=1073741824 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=536870912 -XX:MetaspaceSize=268435456 -XX:MinHeapDeltaBytes=1048576 -XX:MinHeapFreeRatio=30 -XX:NewSize=536870912 -XX:-PrintGC -XX:SurvivorRatio=4 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC Command line: -Xmx1g -Xms1g -Xmn512m -XX:SurvivorRatio=4 -XX:MetaspaceSize=256m -XX:+UseG1GC
-sysprops
以鍵值對的方式顯示當前Java虛擬機的全部的系統(tǒng)屬性,比如:
# jinfo -sysprops 15729 Attaching to process ID 15729, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.251-b08 java.runtime.name = Java(TM) SE Runtime Environment java.vm.version = 25.251-b08 sun.boot.library.path = /usr/local/java/jdk1.8.0_251/jre/lib/amd64 java.protocol.handler.pkgs = org.springframework.boot.loader java.vendor.url = http://java.oracle.com/ java.vm.vendor = Oracle Corporation path.separator = : file.encoding.pkg = sun.io java.vm.name = Java HotSpot(TM) 64-Bit Server VM sun.os.patch.level = unknown sun.java.launcher = SUN_STANDARD user.country = CN java.vm.specification.name = Java Virtual Machine Specification PID = 15729 java.runtime.version = 1.8.0_251-b08 java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment os.arch = amd64 java.endorsed.dirs = /usr/local/java/jdk1.8.0_251/jre/lib/endorsed line.separator = ......
-h 和 -help
顯示jinfo命令的幫助信息。
結尾
雖然jinfo命令已經(jīng)推出很久并且使用頻率比較搞,但它仍然是一個“實驗性質(zhì)的,并且沒有技術支持的”(Experimental and Unsupported)工具,日后可能會被轉正,也有可能在某個JDK版本中無聲無息地消失。所以,且用且珍惜吧。
到此這篇關于Java的jinfo命令使用詳解的文章就介紹到這了,更多相關Java jinfo命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Log4j2?重大漏洞編譯好的log4j-2.15.0.jar包下載(替換過程)
Apache?開源項目?Log4j?的遠程代碼執(zhí)行漏洞細節(jié)被公開,由于?Log4j?的廣泛使用,該漏洞一旦被攻擊者利用會造成嚴重危害,下面小編給大家?guī)砹薒og4j2?重大漏洞編譯好的log4j-2.15.0.jar包下載,感興趣的朋友一起看看吧2021-12-12springcloud feign docker上無法通訊的問題及解決
這篇文章主要介紹了springcloud feign docker上無法通訊的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03java.lang.Instrument 代理Agent使用詳細介紹
這篇文章主要介紹了java.lang.Instrument 代理Agent使用詳細介紹的相關資料,附有實例代碼,幫助大家學習參考,需要的朋友可以參考下2016-11-11JAVA利用HttpClient進行POST請求(HTTPS)實例
下面小編就為大家?guī)硪黄狫AVA利用HttpClient進行POST請求(HTTPS)實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起 小編過來看看吧2016-11-11