我們正在對我們的應用程序進行性能測試。 在測試過程中,我們發現非堆內存和加載類的總數不斷增加。非堆內存和加載類的數量不斷增加
我們的猜測可能是某些第三方jar或應用程序代碼泄漏。
什麼是尋找這種泄漏或針指出問題的最佳方法? 任何可以幫助我找到根源的工具?
我們使用的是Jboss EAP 6.1。
我們正在對我們的應用程序進行性能測試。 在測試過程中,我們發現非堆內存和加載類的總數不斷增加。非堆內存和加載類的數量不斷增加
我們的猜測可能是某些第三方jar或應用程序代碼泄漏。
什麼是尋找這種泄漏或針指出問題的最佳方法? 任何可以幫助我找到根源的工具?
我們使用的是Jboss EAP 6.1。
通過JDK的jvisualVm首次進行Heap Dump,並使用Memory Analyzer (MAT)進行分析。 http://www.yourkit.com/
的JVM附帶了一對夫婦,讓你看堆(和與jHat JMAP)的內容工具:
然後在這個方向上頭「非堆」看。使用這些可能會讓你明白爲什麼你看到的數量超過預期的加載類數。
我會在嘗試查看非堆內存使用情況之前從那裏開始。
這聽起來像我的代碼中的東西可能會不斷創建新的動態代理類。我認爲這會給你帶來你所描述的特徵的泄漏。
其他Q & A解釋了用於追蹤Java存儲泄漏的一般技術;例如
我建議你試圖找出Class
對象開始。我懷疑你會發現堆內存分配與它們相關聯;例如由JIT編譯器生成的關聯本機代碼段。
也可以使用JConsole,它是jvisulavm的較低版本。 –
瞭解更多,我不確定它可以創建堆轉儲文件。 – DmitryKanunnikoff
@Dmitry將採取堆轉儲幫助,因爲問題是非堆內存正在增加? – Rips