本文整理了一份OOM內存泄露問題速查備忘錄,詳細見下文。VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
- 借助MAT(Eclipse Memory Analyzer)工具分析dump文件,分析內存情況。
- 直接用文本工具打開jstack文件,分析線程占用情況。
- 借助VisualVM更直觀:
VBU28資訊網——每日最新資訊28at.com
3、分析過程
3.1、分析線程棧
直接通過文本工具打開jstack.log,搜索業務相關包名,應該大致能定位出問題:VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
3.2、分析內存
1. 用MAT工具打開dump文件VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
2. 一般打開Histogram視圖,這樣能快速地發現問題,也可以打開Leak Suspects(泄露嫌疑),如下圖:VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
尋找這個對象被哪些地方引用了,如下圖:VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
查看大對象,找出自己業務相關的關鍵引用:VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
VBU28資訊網——每日最新資訊28at.com
根據上面GC Roots的結果,在結合自身的業務代碼排查下,一般都會找到線索,比如:VBU28資訊網——每日最新資訊28at.com
- 某個線程遠程調用了接口返回的對象,一直被使用未能釋放
- 每次執行的數據量過大
- 流沒有關閉
- 死循環 或者 遞歸次數太多
- 定時任務執行頻率過高,在任務沒執行完畢時又在持續執行,導致積壓了大量對象
- ......
4、總結
本文整理了一份OOM內存泄露問題速查備忘錄。核心內容是:VBU28資訊網——每日最新資訊28at.com
- top、free、df三連,然后netstat、jstat工具跟上。
- 緊接著趕緊jmap、jstack保存現場,然后重啟應用。
- MAT分析問題,修改問題,重新發布。
本文鏈接:http://www.tebozhan.com/showinfo-26-12678-0.htmlOOM內存泄露速查備忘錄
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 一篇文章帶你了解JavaScript 數值方法(上篇)
下一篇: 自研多模態追蹤算法 PICO 為「手柄小型化」找到新思路
標簽: