內(nèi)存泄漏排查1

docker 內(nèi)運(yùn)行的java服務(wù)

#進(jìn)入docker

#docker 配置支持jmap命令
#0巷嚣、docker-compose.yml 新增節(jié)點(diǎn)cap_add
    cap_add:
        - ALL

#1拐揭、找到對應(yīng)的docker id
docker ps|grep yourserver
#2慢叨、進(jìn)入docker 內(nèi)部
docker exec -it e8c96f1fb92e sh

#3、使用jps 找到對應(yīng)的java進(jìn)程 id
jps

#4、jmap 命令的使用
jmap pid
jmap -clstats pid
jmap -head pid

jmap -heap pid
jmap -histo:live pid
jmap -finalizerinfo pid

#5旺嬉、內(nèi)存dump和分析
#5.1 導(dǎo)出整個JVM 中內(nèi)存信息
jmap -dump:format=b,file=heapdump.hprof pid

#5.2 把docker的文件復(fù)制到主機(jī)
docker cp e8c96f1fb92e:/app/yourserver.hprof /data/log/

#把主機(jī)文件復(fù)制到docker內(nèi)
docker cp /root/yourserver.hprof e8c96f1fb92e:/app/

#5.3 把文件下載到本地使用jprofile分析

#6荆忍、使用jstat命令查看jvm的GC情況
jstat -gc 30996 3000
#即:每3秒一次顯示進(jìn)程號為30996的java進(jìn)程的GC情況
#或使用命令:jstat -gcutil 30996 3000

#發(fā)現(xiàn)大對象
com.mysql.cj.jdbc.AbandonedConnectionCleanupThread

com.mysql.cj.jdbc.AbandonedConnectionCleanupThread$ConnectionFinalizerPhantomReference

https://github.com/brettwooldridge/HikariCP/issues/1473
https://stackoverflow.com/questions/6981564/why-must-the-jdbc-driver-be-put-in-tomcat-home-lib-folder/7198049#7198049


JDBC drivers register themselves in the JVM-wide singleton [`DriverManager`](http://download.oracle.com/javase/6/docs/api/java/sql/DriverManager.html) which is shared by *all* web apps. If you have the same (as in class name) JDBC driver register twice from two different web apps, this might cause your problem. This is even more problematic if your web apps use different versions of the same JDBC driver.

Also, putting JDBC drivers into Tomcat's lib folder will help prevent memory leaks when you redeploy your web app without restarting Tomcat, e.g. if you just put a new WAR file into Tomcat's webapps folder:

We can produce the phenomenon by setting the maxLifetime to a relatively small value like a minute(all other configs are using the default value). Using tools like VisualVM, we can see an obvious increasement of `AbandonedConnectionCleanupThread$ConnectionFinalizerPhantomReference` objects.
其他類型內(nèi)存泄漏
 HashMap 的 put 過程中有可能出現(xiàn)了死循環(huán)問題(圖中 java.util.HashMap $Entry 0x2add6d992cb8 和 0x2add6d992ce8 的 next 引用形成循環(huán))。

查閱相關(guān)文檔定位這屬于典型的并發(fā)使用的場景錯誤 (http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6423457) 囊蓝,簡要的說就是 HashMap 本身并不具備多線程并發(fā)的特性饿悬,在多個線程同時 put 操作的情況下,內(nèi)部數(shù)組進(jìn)行擴(kuò)容時會導(dǎo)致 HashMap 的內(nèi)部鏈表形成環(huán)形結(jié)構(gòu)聚霜,從而出現(xiàn)死循環(huán)狡恬。


If a HashMap is used in a concurrent setting with insufficient synchronization, it is possible for the data structure to get corrupted in such a way that infinite loops appear in the data structure and thus get() could loop forever.

詳情參考:
[https://developer.51cto.com/art/202004/614586.htm](https://developer.51cto.com/art/202004/614586.htm)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蝎宇,隨后出現(xiàn)的幾起案子弟劲,更是在濱河造成了極大的恐慌,老刑警劉巖姥芥,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兔乞,死亡現(xiàn)場離奇詭異,居然都是意外死亡凉唐,警方通過查閱死者的電腦和手機(jī)报嵌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熊榛,“玉大人锚国,你說我怎么就攤上這事⌒梗” “怎么了血筑?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長煎楣。 經(jīng)常有香客問我豺总,道長,這世上最難降的妖魔是什么择懂? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任喻喳,我火速辦了婚禮,結(jié)果婚禮上困曙,老公的妹妹穿的比我還像新娘表伦。我一直安慰自己谦去,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布蹦哼。 她就那樣靜靜地躺著鳄哭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纲熏。 梳的紋絲不亂的頭發(fā)上妆丘,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機(jī)與錄音局劲,去河邊找鬼勺拣。 笑死,一個胖子當(dāng)著我的面吹牛鱼填,可吹牛的內(nèi)容都是我干的宣脉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剔氏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竹祷?” 一聲冷哼從身側(cè)響起谈跛,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塑陵,沒想到半個月后感憾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡令花,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年阻桅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兼都。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫂沉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扮碧,到底是詐尸還是另有隱情趟章,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布慎王,位于F島的核電站蚓土,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赖淤。R本人自食惡果不足惜蜀漆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咱旱。 院中可真熱鬧确丢,春花似錦绷耍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至剃毒,卻和暖如春病袄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赘阀。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工益缠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人基公。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓幅慌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親轰豆。 傳聞我的和親對象是個殘疾皇子胰伍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355