java排查進(jìn)程占用系統(tǒng)內(nèi)存高方法
1、top 查看進(jìn)程內(nèi)存
top 查看具體是哪個(gè)進(jìn)程吃內(nèi)存較多,接下來我們以排查第一個(gè)為例
話外音
根據(jù)pid 查找 pid所屬的 docker D docker inspect -f "{{.Id}} {{.State.Pid}} {{.Config.Hostname}}" $(docker ps -q) |grep <PID>
2、定位線程問題
(通過命令查看9534進(jìn)程的線程情況)
命令:ps p 7051 -L -o pcpu,pmem,pid,tid,time,tname,cmd
由此可以看到這PID:7051 的進(jìn)程產(chǎn)生了很多線程。接下來就可以通過jstack查看內(nèi)存使用的堆棧。
具體可以執(zhí)行 ps p 7051 -L -o pcpu,pmem,pid,tid,time,tname,cmd |wc -l 來查具體有多少線程
3、查看內(nèi)存使用的堆棧
在這里我們挑選了TID=7053的線程進(jìn)行分析,首先需要將7053這個(gè)id轉(zhuǎn)換為16進(jìn)制。需輸入如下命令
執(zhí)行命令 printf "%x\n" 7053
4、將PID為7051的堆棧信息打印到j(luò)stack.log中
命令:jstack -l 7051> /usr/local/temp/jstack.log
5、查看日志
好多waiting的,具體需要開發(fā)查看代碼,為何這么多線程等待
可以看到這個(gè)線程狀態(tài)為:RUNNABLE。是正在運(yùn)行狀態(tài)的
另外其它的大部分線程狀態(tài)為:WAITING。通過查看文件分析 看到大量 Java Thread State。
說明它在等待另一個(gè)條件的發(fā)生,來把自己喚醒,或者干脆它是調(diào)用了 sleep(N)。
此時(shí)線程狀態(tài)大致為以下幾種:
java.lang.Thread.State: WAITING (parking):一直等那個(gè)條件發(fā)生;
java.lang.Thread.State: TIMED_WAITING (parking或sleeping):定時(shí)的,那個(gè)條件不到來,也將定時(shí)喚醒自己。
以上就是java排查進(jìn)程占用系統(tǒng)內(nèi)存高方法的詳細(xì)內(nèi)容,更多關(guān)于java進(jìn)程占用排查的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
idea報(bào)錯(cuò)之找不到符號(hào):類的問題及解決
這篇文章主要介紹了idea報(bào)錯(cuò)之找不到符號(hào):類的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Java如何設(shè)置過期時(shí)間的map的幾種方法
本文主要介紹了Java如何設(shè)置過期時(shí)間的map的幾種方法,常見的解決方法有:ExpiringMap、LoadingCache及基于HashMap的封裝三種,下面就詳細(xì)的介紹一下,感興趣的可以了解下2022-03-03spring/springboot整合curator遇到的坑及解決
這篇文章主要介紹了spring/springboot整合curator遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Mybatisplus自動(dòng)填充實(shí)現(xiàn)方式及代碼示例
這篇文章主要介紹了Mybatisplus自動(dòng)填充實(shí)現(xiàn)方式及代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11Mybatis Interceptor 攔截器的實(shí)現(xiàn)
這篇文章主要介紹了Mybatis Interceptor 攔截器的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12java中構(gòu)造方法及this關(guān)鍵字的用法實(shí)例詳解(超詳細(xì))
大家都知道,java作為一門內(nèi)容豐富的編程語言,其中涉及的范圍是十分廣闊的,下面這篇文章主要給大家介紹了關(guān)于java中構(gòu)造方法及this關(guān)鍵字用法的相關(guān)資料,需要的朋友可以參考下2022-04-04JAVA實(shí)現(xiàn)用戶抽獎(jiǎng)功能(附完整代碼)
這篇文章主要給大家介紹了關(guān)于JAVA實(shí)現(xiàn)用戶抽獎(jiǎng)功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11java如何實(shí)現(xiàn)嵌套對(duì)象轉(zhuǎn)大map(扁平化)
這篇文章主要介紹了java如何實(shí)現(xiàn)嵌套對(duì)象轉(zhuǎn)大map(扁平化),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10MyBatis-Plus標(biāo)簽@TableField之fill自動(dòng)填充方式
這篇文章主要介紹了MyBatis-Plus標(biāo)簽@TableField之fill自動(dòng)填充方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06