我在使用Tomcat的內存消耗方面存在問題。 剛開始後沒有任何反應,但如果某些用戶登錄,在此之後內存使用開始在Edem中增長。 PermGen不增長,但無論如何,它是正常的。 Tomcat的內存使用量在IDLE中增長
我的分析顯示線程RMI TCP連接產生大量Object [] char []和String []對象。我不明白什麼是錯的,在哪裏挖。誰啓動這個線程,是postgres連接,這是什麼?
我在使用Tomcat的內存消耗方面存在問題。 剛開始後沒有任何反應,但如果某些用戶登錄,在此之後內存使用開始在Edem中增長。 PermGen不增長,但無論如何,它是正常的。 Tomcat的內存使用量在IDLE中增長
我的分析顯示線程RMI TCP連接產生大量Object [] char []和String []對象。我不明白什麼是錯的,在哪裏挖。誰啓動這個線程,是postgres連接,這是什麼?
你正在觀察你正在觀察:
的JVM收集關於自己的統計信息,並將其發送給您。這會消耗內存並使用RMI傳輸工具。
What is RMI TCP Accept, Attach Listener, and Signal Dispatcher in Visual VM?
我也看不出有什麼形象示人的問題。伊甸園基本上總是增長緩慢,因爲總會有一些消耗內存的工作。
一旦收集到Eden(~200MB左右),你會發現大部分內存都是完全免費的,而且在倖存者空間中很少(〜8MB)結束,因爲可能還有對這些對象的引用。但他們似乎並沒有離開倖存者,因爲OldGen沒有增長,底部的柱狀圖也顯示出典型的倖存者物體達到2級並且消失。
這一切對我來說都很正常。
這是正常的,不是內存泄漏。對象由用於管理應用程序的線程不斷創建和銷燬。由於JVM垃圾收集器不急於回收未使用的內存,因此會看到內存增加。這種情況會定期發生(基於以前的統計數據)或內存不足時。如果它是一個真正的內存泄漏,那麼在收集之後,您不會看到Eden內存使用率下降到幾乎爲零。內存泄漏顯示爲隨着時間的推移而增加的最低點(在GC之後)。
多數民衆贊成這是正確的,但服務器什麼也不做,沒有人連接到它,並在生產它週期性失敗。 – ekitru 2014-10-31 13:02:16
監視更長時間,您顯示的圖像完全正常。如果有內存泄漏,您會看到OldGen(和/或可能是PermGen)隨着時間的推移而增長。一旦OldGen已滿並且垃圾收集功能不夠用,JVM就會出錯。另請參閱http://stackoverflow.com/questions/542979/using-heapdumponoutofmemoryerror-parameter-for-heap-dump-for-jboss瞭解應該包含實際問題的heapdump。即使您的服務器處於空閒狀態:JVM也具有管理任務,如無論如何都會運行的垃圾回收線程,因此總是存在一點活動。 – zapl 2014-10-31 13:18:07
我發現PermGen OOM生產異常,很棒。 =( – ekitru 2014-10-31 13:54:42