JVM的常用命令匯總
簡(jiǎn)介
監(jiān)測(cè)java應(yīng)用,最方便的就是直接使用jdk提供的現(xiàn)成工具,在jdk的安裝的bin目錄下,已經(jīng)提供了多種命令行監(jiān)測(cè)工具,以便于開(kāi)發(fā)人員和運(yùn)維人員監(jiān)測(cè)java應(yīng)用和診斷問(wèn)題,因此,此類(lèi)工具是java應(yīng)用監(jiān)測(cè)的重要手段。也是作為java開(kāi)發(fā)人員需要掌握的基本技能。
jps
查看java進(jìn)程。
The jps command lists the instrumented Java HotSpot VMs on the target system. The command is limited to reporting information on JVMs for which it has the access permissions.
jinfo
(1)實(shí)時(shí)查看和調(diào)整JVM配置參數(shù)
The jinfo command prints Java configuration information for a specified Java process or core file or a remote debug server. The configuration information includes Java system properties and Java Virtual Machine (JVM) command-line flags.
(2)查看用法
jinfo -flag name PID 查看某個(gè)java進(jìn)程的name屬性的值
jinfo -flag MaxHeapSize PID jinfo -flag UseG1GC PID
(3)修改 參數(shù)只有被標(biāo)記為manageable的flags可以被實(shí)時(shí)修改。
jinfo -flag [+|-] PID jinfo -flag <name>=<value> PID
(4)查看曾經(jīng)賦過(guò)值的一些參數(shù)
jinfo -flags PID
jstat
(1)查看虛擬機(jī)性能統(tǒng)計(jì)信息
The jstat command displays performance statistics for an instrumented Java HotSpot VM. The target JVM is identified by its virtual machine identifier, or vmid option.
(2)查看類(lèi)裝載信息 jstat -class PID 1000 10 查看某個(gè)java進(jìn)程的類(lèi)裝載信息,每1000毫秒輸出一次,共輸出10次。
(3)查看垃圾收集信息
jstat -gc PID 1000 10
jstack
(1)查看線程堆棧信息
The jstack command prints Java stack traces of Java threads for a specified Java process, core file, or remote debug server.
(2)用法
jstack PID
(4)排查死鎖案例
DeadLockDemo
//運(yùn)行主類(lèi) public class DeadLockDemo { public static void main(String[] args) { DeadLock d1=new DeadLock(true); DeadLock d2=new DeadLock(false); Thread t1=new Thread(d1); Thread t2=new Thread(d2); t1.start(); t2.start(); } } //定義鎖對(duì)象 class MyLock{ public static Object obj1=new Object(); public static Object obj2=new Object(); } //死鎖代碼 class DeadLock implements Runnable{ private boolean flag; DeadLock(boolean flag){ this.flag=flag; } public void run() { if(flag) { while(true) { synchronized(MyLock.obj1) { System.out.println(Thread.currentThread().getName()+"----if獲得obj1鎖"); synchronized(MyLock.obj2) { System.out.println(Thread.currentThread().getName()+"----if獲得obj2鎖"); } } } } else { while(true){ synchronized(MyLock.obj2) { System.out.println(Thread.currentThread().getName()+"----否則獲得obj2鎖"); synchronized(MyLock.obj1) { System.out.println(Thread.currentThread().getName()+"----否則獲得obj1鎖"); } } } } } }
運(yùn)行結(jié)果
jstack分析
把打印信息拉到最后可以發(fā)現(xiàn)
jmap
(1)生成堆轉(zhuǎn)儲(chǔ)快照
The jmap command prints shared object memory maps or heap memory details of a specified process, core file, or remote debug server.
(2)打印出堆內(nèi)存相關(guān)信息
jmap -heap PID jinfo -flag UsePSAdaptiveSurvivorSizePolicy 35352 -XX:SurvivorRatio=8
(3)dump出堆內(nèi)存相關(guān)信息
jmap -dump:format=b,file=heap.hprof PID
(4)要是在發(fā)生堆內(nèi)存溢出的時(shí)候,能自動(dòng)dump出該文件就好了
一般在開(kāi)發(fā)中,JVM參數(shù)可以加上下面兩句,這樣內(nèi)存溢出時(shí),會(huì)自動(dòng)dump出該文件。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof。
設(shè)置堆內(nèi)存大小: -Xms20M -Xmx20M
啟動(dòng),然后訪問(wèn)localhost:9090/heap,使得堆內(nèi)存溢出
(5)關(guān)于dump下來(lái)的文件
一般dump下來(lái)的文件可以結(jié)合工具來(lái)分析,這塊后面再說(shuō)。
到此這篇關(guān)于JVM的常用命令匯總的文章就介紹到這了,更多相關(guān)JVM常用命令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java 實(shí)現(xiàn)黃金分割數(shù)的示例詳解
這篇文章主要介紹了java 實(shí)現(xiàn)黃金分割數(shù)的示例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件(最新推薦)
這篇文章主要介紹了IntelliJ?IDEA2022.3?springboot?熱部署含靜態(tài)文件,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01Spring?Boot實(shí)現(xiàn)文件上傳的兩種方式總結(jié)
應(yīng)用開(kāi)發(fā)過(guò)程中,文件上傳是一個(gè)基礎(chǔ)的擴(kuò)展功能,它的目的就是讓大家共享我們上傳的文件資源,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Spring?Boot實(shí)現(xiàn)文件上傳的兩種方式,需要的朋友可以參考下2023-05-05Java中的JPA實(shí)體關(guān)系:JPA一對(duì)一,一對(duì)多(多對(duì)一),多對(duì)多
Java Persistence API(JPA)是Java平臺(tái)上的一個(gè)對(duì)象關(guān)系映射(ORM)規(guī)范,用于簡(jiǎn)化數(shù)據(jù)庫(kù)操作,其中實(shí)體關(guān)系的映射是核心內(nèi)容之一,本文將深入淺出地探討JPA中的三種基本實(shí)體關(guān)系類(lèi)型:一對(duì)一、一對(duì)多、多對(duì)多,揭示常見(jiàn)問(wèn)題、易錯(cuò)點(diǎn)及其避免策略,希望能幫助大家2024-06-06Java Swing JRadioButton單選按鈕具體使用
這篇文章主要介紹了Java Swing JRadioButton單選按鈕具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12在idea中將創(chuàng)建的java web項(xiàng)目部署到Tomcat中的過(guò)程圖文詳解
這篇文章主要介紹了在idea中將創(chuàng)建的java web項(xiàng)目部署到Tomcat中的過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04javaweb圖書(shū)商城設(shè)計(jì)之訂單模塊(5)
這篇文章主要為大家詳細(xì)介紹了javaweb圖書(shū)商城設(shè)計(jì)之訂單模塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11