1 確定線上oom對應的配置dump的檔案的獲取
不管是線上伺服器還是本地伺服器 出現oom的,首先獲取 配置dump檔案輸出路徑 (最快解是和運維溝通配置並找出檔案)
2 新手可模擬場景如下
啟動idea:模擬配置vm引數 :-xx:+heapdumponoutofmemoryerror -xx:heapdumppath=/users/szy/desktop/dump/
啟動idea模擬**:
/**
vm args:
//這兩個引數保證了堆中的可分配記憶體固定為20m
-xms20m
-xmx20m
//檔案生成的位置,作則生成在桌面的乙個目錄
-xx:+heapdumponoutofmemoryerror //檔案生成的位置,作則生成在桌面的乙個目錄
//檔案生成的位置,作則生成在桌面的乙個目錄
-xx:heapdumppath=/users/szy/desktop/dump/
*/public class heapoom
public static void main(string args) }}
2 將線上的dump的檔案(或本機) 裝入本機jdk 下自帶的dump檔案分析器 visual vm
3 以舉例**為例出現的分析結果是:
記憶體洩漏導致記憶體溢位(OOM)
開發中遇到這樣乙個bug,調整之前做的乙個意見反饋頁面布局,輸入框中限制字數200字,超過時自動刪除不顯示。自定義了乙個可監聽並限制輸入字數的edittext,貼上 測試過程中發現如果一次性往輸入框中貼上幾百上千個文字時程式就會閃退,報的錯誤是 上網查了一下這個錯誤的意思是棧滿溢位的錯誤。檢視錯誤行...
線上服務記憶體OOM問題定位
某乙個物件被頻繁申請,卻沒有釋放,記憶體不斷洩漏,導致記憶體耗盡 某乙個資源被頻繁申請,系統資源耗盡,例如 不斷建立執行緒,不斷發起網路連線 jmap heap 10765 jmap histo live 10765 more 所佔記憶體大小 類名消費者消費速度慢 或停止消費了 而生產者不斷往佇列中...
C 記憶體洩漏定位 valgrind
new 和 delete 不匹配導致記憶體洩漏。最開始因為指標被我不小心delete了,導致有錯誤,就遮蔽了。網上學習了用valgrind 定位洩漏記憶體的位置,比較方便。然後,編譯源程式,比如 g g o testexe testexe.cpp 然後利用valgrind 進行定位,可執行程式可能有...