2012-02-24 14 views
3

我正在使用JProfiler來分析我的應用程序。我注意到,當我運行垃圾收集器時,所有標記的記錄對象變爲綠色,過了一段時間後,它又在對象創建和銷燬中面臨一些差異。
順便說一下,我的應用程序仍然在這個時候運行,我的應用程序面臨內存泄漏的問題,這是通常的。
有一些快照可以幫助您瞭解情況
enter image description hereJProfiler:後垃圾收集器收集對象。如果有任何Live對象存在於堆中,是否存在內存泄漏?

以上是快照,當我運行垃圾收集器...

但一段時間後,這些酒吧變成綠色和紅色部分...

+1

您應該看看完整GC之後使用多少內存的差異。 – 2012-02-24 08:22:16

回答

2

通常情況下,如果某個對象佔據的大小(如char [])可以說您的內存正在泄漏,但仍會繼續增長。

一般來說,如果在GC之後你會看到某些類型的對象再次出現「紅色」。我假設你的應用程序正在做一些工作併產生垃圾。所以,這本身不是問題。但是,如果大小持續增長,那麼可能是是一個問題。

一個好的策略是要注意給定對象的分配大小,說的char [],之前和之後的GC,看看有多少對象正在收集。在一段時間內重複這個練習。如果規模不能大規模增長,你應該沒問題。

重要點這裏雖然,確保負載配置文件(請求數,後臺作業等)是相同的。否則,你的記憶分析結果不會成爲蘋果來比較。