监视和检测Java应用程序中的内存泄漏
因此,您的應用程序內存不足,您日夜不停地分析應用程序,以期捕獲對象中的內存漏洞。 后續步驟將說明如何監視和檢測您的內存泄漏,以確保您的應用程序安全。
1.懷疑內存泄漏
如果您懷疑有內存泄漏,可以使用一種方便的方法來確保它確實在使用jconsole。 您可以在本地或遠程將jconsole連接到您的應用程序,并使其監視一段時間(小時,半天,隔夜,周..)。將jconsole連接到您的應用程序后,開始分析“內存”選項卡。 內存泄漏的懷疑看起來像這樣:
2.如何在您的應用程序中查找泄漏源
為此,我建議使用jisualVM。 該工具是JDK的一部分。 在jvisualVM內部,您可以進行堆轉儲(在“監視器”選項卡中)。 請記住,無法遠程創建堆轉儲。 您需要在同一臺計算機上運行jvisualvm或執行jmap命令來生成Heap-Dump文件,然后將其導入到jvisualvm中。
* Jmap是一個oracle工具,可打印給定進程的所有對象內存映射樹。 這是一個jmap文檔。
因此,基本上,您是在遠程服務器(例如生產環境)上運行jmap,然后在本地分析該文件。 我建議做幾個堆轉儲。 無論您是否有內存泄漏,這都將為您提供更好的畫面。
3.分析堆轉儲文件
我個人喜歡使用MAT(內存分析器)( http://www.eclipse.org/mat/ )。 MAT獲取堆轉儲文件,并幫助您查找內存泄漏。 MAT準確顯示哪些實例具有內存增長可疑性。 您可能會注意到Java庫實例是“問題可疑者”,例如:“ java.lang.Class”,但這很正常。
泄漏檢測示例
在這里,您可以看到疑似泄漏組件的確切實例。
4.分析可疑物體
下一步是按可疑實例的詳細信息字段并調查其中的對象:
在上面的示例中,我們可以清楚地看到TreeMap類型的字段正在增長。
5.修復泄漏,然后再次運行測試
現在剩下的是了解并修復泄漏源,但是對于每個對象來說,這都是個別的。 這些分步指導將幫助您檢測泄漏的內存對象。
翻譯自: https://www.javacodegeeks.com/2013/05/monitoring-and-detecting-memory-leaks-in-your-java-application.html
總結
以上是生活随笔為你收集整理的监视和检测Java应用程序中的内存泄漏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马鞍山物价局房产备案价官网(马鞍山物价局
- 下一篇: (Linux 的ftp用户)