日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java内存溢出排查jstack_Java命令行监控工具(jmap,jstack,jstat,jinfo,jps)

發(fā)布時(shí)間:2025/5/22 java 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java内存溢出排查jstack_Java命令行监控工具(jmap,jstack,jstat,jinfo,jps) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

項(xiàng)目部署上線之后,線上項(xiàng)目是不能輕易修改的,定位問題的難度也會(huì)變大。因此監(jiān)控是非常重要的一個(gè)環(huán)節(jié),有了監(jiān)控,我們才能更好的定位系統(tǒng)中的問題,從而排查。監(jiān)控的工具有很多種, 但是java自帶的命令行監(jiān)控工具,是必須要掌握的。

jps

查看系統(tǒng)中jvm進(jìn)程, 其它的命令通常先使用jps查看進(jìn)程號(hào),然后在根據(jù)線程號(hào)獲取jvm進(jìn)程信息

image.png

jps -m 查看jvm進(jìn)程并且?guī)в袇?shù)查看

jps -v 查看傳遞到j(luò)vm的參數(shù)

jstat

顯示JVM的性能統(tǒng)計(jì)信息,

常見用法:jstat - [-t] [-h] [ []]

例如:查看JIT編譯信息,GC信息和JVM中的class信息。

image.png

解釋下-gc選項(xiàng)中列的含義:-gc查看垃圾收集器中的信息, 主要包含jvm的運(yùn)行時(shí)數(shù)據(jù)區(qū)統(tǒng)計(jì)。

后綴為C的代表當(dāng)前區(qū)的容量,后綴為U的代表已經(jīng)使用了多少容量,后綴為T的代表耗時(shí)

S0C 存活區(qū)0的容量(KB)

S1C 存活區(qū)1的容量(KB)

S0U 存活區(qū)0使用的空間 (KB).

S1U 存活區(qū)1的利用空間 (KB).

EC Eden區(qū)的容量(KB).

EU Eden區(qū)利用的容量(KB).

OC 老年代容量(KB).

OU 老年代使用容量(KB).

PC 當(dāng)前永久帶的容量(KB).

PU 永久帶使用容量(KB).

YGC 發(fā)生了多少次Young GC

YGCT Young GC的時(shí)間

FGC Full GC的次數(shù)

FGCT Full GC的收集時(shí)間

GCT 總共的GC時(shí)間.

jstack

查看線程堆棧信息,在發(fā)生死鎖的時(shí)候可以利用這個(gè)命令查找死鎖或者在發(fā)生死循環(huán)的時(shí)候利用此命令排查。

jstack vmpid 會(huì)打印線程的堆棧信息。通過堆棧可以查看具體線程正在執(zhí)行那些代碼,廈門演示兩個(gè)使用jstack排查死鎖與死循環(huán)的命令。

死鎖代碼:

public class DeadLock {

private static Object o1 = new Object();

private static Object o2 = new Object();

private static CountDownLatch countDownLatch = new CountDownLatch(2);

public static void main(String[] args) throws InterruptedException {

new Thread(){

@Override

public void run() {

synchronized (o1){

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("線程1 獲得鎖1");

synchronized (o2){

System.out.println("線程1 獲得鎖2");

countDownLatch.countDown();

}

}

}

}.start();

new Thread(){

@Override

public void run() {

synchronized (o2){

try {

Thread.sleep(100);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println("線程2 獲得鎖2");

synchronized (o1){

System.out.println("線程2 獲得鎖1");

countDownLatch.countDown();

}

}

}

}.start();

countDownLatch.await();

System.out.println("執(zhí)行完畢");

}

}

死鎖之后:

可以看到j(luò)stack已經(jīng)幫我們找到了死鎖。

image.png

image.png

死循環(huán)需要配合Top命令一起使用,死循環(huán)會(huì)導(dǎo)致CPU不斷的飆升,這時(shí)候使用top命令,查看cpu占用率較高的命令:

image.png

使用top -H -p 24278 查看進(jìn)程中具體是那一條線程的CPU利用率高

image.png

可以看到是24279的線程,在top中使用的是10進(jìn)制,在jstack中打印的線程是16進(jìn)制,因此做一次轉(zhuǎn)換。

24279 => 5ed7

然后查看線程:

image.png

然后我們可以知道具體那一行的指令在一直運(yùn)行。

jinfo查看JVM啟動(dòng)時(shí)候設(shè)置的參數(shù)值

jinfo可以查看當(dāng)前JVM線程配置的系統(tǒng)屬性,以及運(yùn)行時(shí)設(shè)置的參數(shù)值。

直接使用jinfo

前半段是系統(tǒng)的屬性

image.png

后半段是jvm的參數(shù)

image.png

我們也可以直接使用jinfo查看具體的某個(gè)參數(shù)值:

image.png

jmap分析堆

在發(fā)生OME的時(shí)候,會(huì)用jmap分析堆中具體是什么問題,才能更好的解決問題。jmap一般和mat配合使用。

一般在java開發(fā)的項(xiàng)目啟動(dòng)時(shí)候,最好加上下面命令,在內(nèi)存溢出的時(shí)候可以通過日志查看信息。

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/java/dump

當(dāng)然在項(xiàng)目運(yùn)行的時(shí)候也可以使用jmap -heap jvmpid查看對象內(nèi)存的映射。

演示內(nèi)存溢出

堆內(nèi)存溢出代碼

public class DealCycle {

public static LinkedList linkedList = new LinkedList<>();

public static void main(String[] args) {

int i = 0;

while (true){

linkedList.add(i);

}

}

}

運(yùn)行:

image.png

大家可以去網(wǎng)站上下載java mat的二進(jìn)制壓縮包,學(xué)習(xí)一下

image.png

image.png

如果每次都等到內(nèi)存溢出才導(dǎo)出文件時(shí)間就有些晚了,可以使用jmap直接導(dǎo)出

image.png

最后

這篇文章主要介紹了java自帶的命令行工具,通過這些命令行工具,我們可以很好的得知當(dāng)前jvm的運(yùn)行狀態(tài)。

總結(jié)

以上是生活随笔為你收集整理的java内存溢出排查jstack_Java命令行监控工具(jmap,jstack,jstat,jinfo,jps)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国精产品一区一区三区视频 | 伊人网大香 | 欧美日韩激情在线观看 | 神秘马戏团在线观看免费高清中文 | 亚洲欧美视频在线观看 | 国产精品爽 | 28一20岁女人一级 | 日本不卡一区二区三区视频 | 欧美一区二区激情 | 欧美区视频 | 在线国产福利 | 亚洲久草视频 | 一区二区欧美日韩 | 韩国精品在线 | 亚洲欧美va天堂人熟伦 | 亚洲码国产精品高潮在线 | 尤物一区 | 精品盗摄一区二区三区 | 88av网站| 台湾佬久久 | 爱爱精品视频 | 天堂在线免费观看视频 | 免费成人看片 | 中文字幕在线播放视频 | 男人插入女人下面视频 | 在线观看波多野结衣 | 国产区视频在线 | 国产精品美女自拍视频 | 一区二区三区韩国 | 99爱99| 久久久久亚洲av无码专区首jn | 欧美成人日韩 | 亚洲欧美综合网 | 精品小视频 | 冲田杏梨 在线 | 美女视频一区二区 | 中文字幕四区 | 国产亚洲高清视频 | 狠狠干伊人网 | 老汉色老汉首页av亚洲 | 超碰人人超碰 | 久久人人爽人人爽人人片亚洲 | 一级日韩毛片 | 18禁免费无码无遮挡不卡网站 | 七七久久 | 999av视频| 日韩www | 午夜18视频在线观看 | 欧美一区二区视频在线 | 午夜手机福利 | 亚洲成人黄色av | 国产成人免费在线 | 婷婷五综合 | 久久久久久一级片 | 欧美日韩在线一区二区三区 | 国产美女自拍 | 国产69精品久久久久777 | 亚洲精品av中文字幕在线在线 | 久久免费黄色 | www.黄色片.com| 森泽佳奈作品在线观看 | 亚洲尹人 | 亚洲色图一区二区三区 | 成人免费毛片色戒 | 久久视精品 | 午夜一区在线观看 | jizzjizz国产 | 精品久久久久久久久久 | 这里只有精品国产 | 视频一区二区视频 | 国产 日韩 欧美 精品 | 在线看日本 | 久久精品中文字幕 | 亚洲精品一区二区三区精华液 | 日本www在线播放 | 亚洲图片综合网 | 国产精品一区二区人人爽 | 51ⅴ精品国产91久久久久久 | 成人免费看片载 | 成人福利免费视频 | 99riav国产精品视频 | 青青青视频在线 | 少妇被粗大猛进进出出s小说 | 久久蜜桃精品 | 久久成人在线 | 青青草视频免费看 | 欧美精品一卡二卡 | 亚洲精品二三区 | 一区二区三区天堂 | 精品视频在线观看 | 梦梦电影免费高清在线观看 | 一级做a爰片久久毛片潮喷 天天透天天干 | 日韩免费一区二区 | 成人在线直播 | 国产精品久久久久久久久免费桃花 | 亚洲你我色| 体内射精一区二区 | 麻豆av免费在线观看 | www.操|