2014-03-12 65 views
-1

我們正在對我們的應用程序進行性能測試。 在測試過程中,我們發現非堆內存和加載類的總數不斷增加。非堆內存和加載類的數量不斷增加

我們的猜測可能是某些第三方jar或應用程序代碼泄漏。

什麼是尋找這種泄漏或針指出問題的最佳方法? 任何可以幫助我找到根源的工具?

我們使用的是Jboss EAP 6.1。

回答

0

的JVM附帶了一對夫婦,讓你看堆(和與jHat JMAP)的內容工具:

然後在這個方向上頭「非堆」看。使用這些可能會讓你明白爲什麼你看到的數量超過預期的加載類數。

我會在嘗試查看非堆內存使用情況之前從那裏開始。

+0

我一直在使用像appdynamics,jconsole這樣的工具,我可以說堆似乎不是一個問題。堆利用率看起來很好,適當的GC cycles.thread計數也stable.Only事情這是一個問題是沒有類的總數加載不斷增加,這增加了非堆內存使用 – Rips

+0

好的 - 我們在這裏獲得了我的知識水平,但是如果這些類不在堆中,那麼這些類在哪裏加載? – DaveH

+0

類被加載到堆外的permgen空間 – Rips

1

這聽起來像我的代碼中的東西可能會不斷創建新的動態代理類。我認爲這會給你帶來你所描述的特徵的泄漏。

其他Q & A解釋了用於追蹤Java存儲泄漏的一般技術;例如

我建議你試圖找出Class對象開始。我懷疑你會發現堆內存分配與它們相關聯;例如由JIT編譯器生成的關聯本機代碼段。