JVM調(diào)試命令與調(diào)試工具詳解
一、JDK自帶命令
Sun JDK監(jiān)控和故障處理命令如:
1、jps
JVM Process Status Tool,顯示指定系統(tǒng)內(nèi)所有的HotSpot虛擬機(jī)進(jìn)程。
jsp命令格式:
jps [ options ] [ hostid ] 擴(kuò)展參數(shù):jps -l;jps -mlv;
各參數(shù)說明如下:
2、jstat(FullGC頻繁解決方案)
JVM statistics Monitoring,用于監(jiān)視虛擬機(jī)運(yùn)行時(shí)狀態(tài)信息的命令,它可以顯示出虛擬機(jī)進(jìn)程中的類裝載、內(nèi)存、垃圾收集、JIT編譯等運(yùn)行數(shù)據(jù)。
jstat命令格式:
jstat [ option vmid [interval[s|ms] [count]] ] jstat -gc pid 1000 10 查看當(dāng)前pid使用jvm堆??臻g的內(nèi)存使用情況,每1000豪秒,共打印10次 jstat -gcutil pid 1000 10 內(nèi)存百分比
3、jmap
JVM Memory Map,用于生成heap dump文件。
jmap命令格式:
jmap [ option ] vmid
4、jhat
JVM Heap Analysis Tool,與jmap搭配使用,用來分析jmap生成的dump,該命令解析 Java 堆轉(zhuǎn)儲(chǔ)文件并啟動(dòng) Web 服務(wù)器,生成dump的分析結(jié)果后,可以在瀏覽器中查看。
使用案例:
1. 導(dǎo)出dump信息到a.bin文件
2. 啟動(dòng)jhat進(jìn)行分析文件
5、jstack(cpu占用高解決方案)
用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照(一般稱為threaddump或者javacore文件)。線程快照就是當(dāng)前虛擬機(jī)內(nèi)每一條線程正在執(zhí)行的方法堆棧集合,生成線程快照的目的通常是定位線程出現(xiàn)長(zhǎng)時(shí)間停頓的原因,如線程間死鎖、死循環(huán)、請(qǐng)求外部資源導(dǎo)致的長(zhǎng)時(shí)間掛起等,都是導(dǎo)致線程長(zhǎng)時(shí)間停頓的常見原因。
jstack命令格式:
jstack [ option ] vimd
6、jinfo
JVM Configuration info,用于實(shí)時(shí)查看和調(diào)整虛擬機(jī)運(yùn)行參數(shù)。
jinfo命令格式:
主要介紹-flag參數(shù),如果想查看一個(gè)已經(jīng)運(yùn)行的java程序的虛擬機(jī)參數(shù)值
jinfo [ option ] pid $ jinfo -flag MaxMetaspaceSize 962 -XX:MaxMetaspaceSize=18446744073709547520
二、JDK的可視化工具JConsole
1、JConsole
JConsole(Java Monitoring and Management Console)是一種基JMX(Java Management Extensions,即Java管理擴(kuò)展)的可視化監(jiān)視、管理工具。
通過JDK/bin目錄下的“jconsole.exe”啟動(dòng)JConsole后,將自動(dòng)搜索出本機(jī)運(yùn)行的所有虛擬機(jī)進(jìn)程。
2、VisualVM
VisualVM是更常用的可視化監(jiān)控工具,它本身還具有插件擴(kuò)展功能,因此功能非常強(qiáng)大,目前使用非常多。
需要先說明的是一些安裝上的問題,雖然安裝好jdk之后是會(huì)有一個(gè)VisualVM的程序在jdk的bin目錄下,但是不建議使用jdk提供的這個(gè),建議直接去官網(wǎng)下載最新的版本使用。
下載:
插件下載:
到此這篇關(guān)于JVM調(diào)試命令與調(diào)試工具的文章就介紹到這了,更多相關(guān)JVM調(diào)試命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
配置化Feign接口動(dòng)態(tài)切換URL方式
本文介紹了在開發(fā)、測(cè)試和生產(chǎn)環(huán)境中使用Feign接口時(shí),根據(jù)不同的環(huán)境動(dòng)態(tài)切換調(diào)用URL的方法,通過在不同環(huán)境的配置文件中配置URL,并實(shí)現(xiàn)一個(gè)Feign攔截器來讀取這些配置,從而實(shí)現(xiàn)URL的動(dòng)態(tài)切換,這種方法避免了引入過多步驟,同時(shí)也保證了不同環(huán)境下的URL正確調(diào)用2024-11-11Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡(jiǎn)單示例
這篇文章主要介紹了Java 基礎(chǔ) byte[]與各種數(shù)據(jù)類型互相轉(zhuǎn)換的簡(jiǎn)單示例的相關(guān)資料,這里對(duì)byte[]類型對(duì)long,int,double,float,short,cahr,object,string類型相互轉(zhuǎn)換的實(shí)例,需要的朋友可以參考下2017-01-01java 使用JDBC構(gòu)建簡(jiǎn)單的數(shù)據(jù)訪問層實(shí)例詳解
以下是如何使用JDBC構(gòu)建一個(gè)數(shù)據(jù)訪問層,包括數(shù)據(jù)轉(zhuǎn)換(將從數(shù)據(jù)庫(kù)中查詢的數(shù)據(jù)封裝到對(duì)應(yīng)的對(duì)象中……),數(shù)據(jù)庫(kù)的建立,以及如何連接到數(shù)據(jù)庫(kù),需要的朋友可以參考下2016-11-11Java的帶GUI界面猜數(shù)字游戲的實(shí)現(xiàn)示例
這篇文章主要介紹了Java的帶GUI界面猜數(shù)字游戲的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12