Java虛擬機(jī)(JVM)的自帶工具使用詳解
jps
JVM進(jìn)程狀態(tài)工具,用于查看進(jìn)程的基本信息。JPS是Java Virtual Machine Process Status Tool的縮寫(xiě),它是Java提供的一個(gè)用于查看所有Java進(jìn)程的命令行工具。
jps: 默認(rèn)情況下,不帶任何參數(shù)運(yùn)行jps將顯示所有正在運(yùn)行的Java進(jìn)程的PID和主類名。jps -l: 使用-l選項(xiàng)可以顯示完整的包名和類名jps -m: 使用-m選項(xiàng)可以顯示傳遞給Java進(jìn)程的啟動(dòng)參數(shù)。jps -v: 使用-v選項(xiàng)可以顯示傳遞給Java進(jìn)程的完整命令行參數(shù)
jstat 的各種命令
jstat 是JVM統(tǒng)計(jì)監(jiān)控工具,用于查看堆、GC(垃圾回收)等詳細(xì)信息。
jstat -gc : 顯示垃圾收集統(tǒng)計(jì)信息,包括新生代、老年代、永久代等區(qū)域的使用情況和垃圾回收次數(shù)。
以下是 jstat -gc 命令的一般用法:
jstat -gc <pid> [interval] [count]
其中, 是目標(biāo)Java進(jìn)程的進(jìn)程ID,[interval] 是采樣間隔(以毫秒為單位),[count] 是要顯示的樣本數(shù)量。如果不指定 [interval] 和 [count],則默認(rèn)情況下會(huì)持續(xù)輸出垃圾收集統(tǒng)計(jì)信息,直到手動(dòng)停止。
例如,要查看進(jìn)程ID為12345的Java虛擬機(jī)的垃圾收集統(tǒng)計(jì)信息,每隔1000毫秒(1秒)采樣一次,共采樣10次,可以運(yùn)行以下命令:
jstat -gc 12345 1000 10
這將輸出類似以下格式的數(shù)據(jù):
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 0.0 512.0 0.0 0.0 4096.0 4096.0 8192.0 8192.0 1024.0 768.0 2048.0 2048.0 10 0.123 2 0.045 0.168
每一列的含義如下:
S0C: Survivor 0區(qū)的容量(字節(jié))S1C: Survivor 1區(qū)的容量(字節(jié))S0U: Survivor 0區(qū)已使用的空間(字節(jié))S1U: Survivor 1區(qū)已使用的空間(字節(jié))EC: Eden區(qū)的容量(字節(jié))EU: Eden區(qū)已使用的空間(字節(jié))OC: Old區(qū)的容量(字節(jié))OU: Old區(qū)已使用的空間(字節(jié))MC: Metaspace區(qū)的容量(字節(jié))MU: Metaspace區(qū)已使用的空間(字節(jié))CCSC: Compressed Class Space區(qū)的容量(字節(jié))CCSU: Compressed Class Space區(qū)已使用的空間(字節(jié))YGC: 年輕代垃圾回收次數(shù)YGCT: 年輕代垃圾回收總耗時(shí)(秒)FGC: Full GC次數(shù)FGCT: Full GC總耗時(shí)(秒)GCT: 垃圾回收總耗時(shí)(秒)
jstat中的其他命令:
jstat -gccapacity: 顯示各個(gè)內(nèi)存區(qū)域的容量。jstat -gcutil: 顯示垃圾收集統(tǒng)計(jì)信息的百分比形式,更直觀地展示內(nèi)存區(qū)域使用情況。jstat -gccause: 顯示最后一次垃圾回收的原因。jstat -gcnew: 顯示新生代的垃圾收集統(tǒng)計(jì)信息。jstat -gcold: 顯示老年代的垃圾收集統(tǒng)計(jì)信息。jstat -gcpermcapacity: 顯示永久代的容量。jstat -compiler: 顯示即時(shí)編譯器的編譯統(tǒng)計(jì)信息。jstat -printcompilation: 顯示即時(shí)編譯器的編譯請(qǐng)求和編譯耗時(shí)。
jinfo
Java配置信息工具,可以查看配置參數(shù)信息,還支持部分參數(shù)的運(yùn)行時(shí)修改。
使用jinfo命令查看Java應(yīng)用程序的運(yùn)行時(shí)屬性,可以輸入以下命令,其中 pid是Java應(yīng)用程序的進(jìn)程ID 并輸出對(duì)應(yīng)名稱的參數(shù):
jinfo -flag name <pid>
jmap
Java內(nèi)存映射工具,用于分析堆內(nèi)存,還能夠dump堆內(nèi)存快照。
jmap -histo 23173
該命令將會(huì)顯示進(jìn)程ID為23173的Java進(jìn)程的堆內(nèi)存中各個(gè)對(duì)象的數(shù)量和占用的內(nèi)存大小。
這個(gè)命令可以幫助開(kāi)發(fā)者了解當(dāng)前Java進(jìn)程的內(nèi)存使用情況,從而找出潛在的內(nèi)存泄漏或者優(yōu)化內(nèi)存使用。
jhat
Java堆分析工具,用于解析堆內(nèi)存的dump文件。當(dāng)使用jmap或其他方法生成Java的堆文件后,可以使用jhat進(jìn)行分析。
運(yùn)行jhat命令后,它會(huì)解析堆轉(zhuǎn)儲(chǔ)文件并啟動(dòng)一個(gè)Web服務(wù)器,用戶可以通過(guò)瀏覽器訪問(wèn)并查看堆的情況。
在HTML頁(yè)面上,jhat提供了多種功能,如顯示所有類包括平臺(tái)類、從根集能引用到的對(duì)象、顯示每個(gè)類的實(shí)例數(shù)量、堆實(shí)例的分布表以及執(zhí)行對(duì)象查詢語(yǔ)句等。
jhat一般與jmap搭配使用,用于分析jmap生成的堆轉(zhuǎn)儲(chǔ)快照。
jstack
Java堆棧跟蹤工具,用于查看Java程序的堆棧信息,可以用來(lái)分析線程問(wèn)題(如死鎖)。
jstat提供了多種命令選項(xiàng),可以詳細(xì)查看堆內(nèi)存各部分的使用量以及加載類的數(shù)量。
例如,使用jstat -class可以查看類加載統(tǒng)計(jì)信息,包括加載類的數(shù)量、所占用的空間大小以及未加載類的數(shù)量和所占用的空間。
jstat -class 23173 #顯示如下: Loaded Bytes Unloaded Bytes Time 19595 40567.9 10 10.3 8.20
jstat -compiler則用于顯示JIT編譯器的編譯統(tǒng)計(jì)信息,包括編譯數(shù)量、失敗數(shù)量等。
jstat還可以用于監(jiān)控垃圾回收情況。
例如:
使用jstat -gc可以查看年輕代和老年代的垃圾回收次數(shù)、回收消耗時(shí)間以及堆內(nèi)存的使用情況。
通過(guò)這些統(tǒng)計(jì)信息,開(kāi)發(fā)者可以了解JVM中垃圾回收器的行為,從而優(yōu)化應(yīng)用程序的性能。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java之如何正確地對(duì)包裝類進(jìn)行裝箱與拆箱
在這篇文章中給大家繼續(xù)講解包裝類的裝箱和拆箱問(wèn)題。你可能會(huì)很好奇,做java開(kāi)發(fā),怎么還裝起箱子來(lái)了?那么就請(qǐng)大家?guī)е苫笸驴窗?/div> 2023-04-04
Java操作xls替換文本或圖片的功能實(shí)現(xiàn)
這篇文章主要給大家介紹了關(guān)于Java操作xls替換文本或圖片功能實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼講解了文件上傳、文件處理和Excel文件生成,需要的朋友可以參考下2024-12-12
mybatisPlus?FieldStrategy?策略作用小結(jié)
MyBatis-Plus的FieldStrategy枚舉用于控制實(shí)體字段在插入、更新和查詢條件中的空值處理策略,下面就來(lái)詳細(xì)的介紹一下mybatisPlus?FieldStrategy?策略,感興趣的可以了解一下2025-12-12
Spring中BeanFactory與FactoryBean接口的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于Spring中BeanFactory與FactoryBean接口的區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Java代碼實(shí)現(xiàn)發(fā)送QQ和網(wǎng)易電子郵件
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Java代碼實(shí)現(xiàn)發(fā)送QQ和網(wǎng)易電子郵件功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-02-02
解決idea中Terminal終端無(wú)法執(zhí)行GIT命令+Terminal 中文亂碼問(wèn)題
這篇文章主要介紹了解決idea中Terminal終端無(wú)法執(zhí)行GIT命令+Terminal 中文亂碼問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
springcloud項(xiàng)目占用內(nèi)存好幾個(gè)G導(dǎo)致服務(wù)器崩潰的問(wèn)題
這篇文章主要介紹了springcloud項(xiàng)目占用內(nèi)存好幾個(gè)G導(dǎo)致服務(wù)器崩潰的問(wèn)題,本文給大家分享解決方案供大家參考,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10最新評(píng)論

