2014-06-30 35 views
0

我正在Windows 8.1上測試Tomcat 8.0.3和Java 8上的java webapp(構建1.8.0-b129 64位服務器虛擬機(構建25.0-b69,混合模式) 。Tomcat 8下的奇怪內存行爲(jvisualvm)

的應用只需點擊幾下鼠標後耗盡內存。衆所周知,在Windows 7上使用Tomcat 7和CentOS與Java 8(開JDK)與4GB內存運行良好。

30/06 23:42:56 ERROR(error.ErrorController)org.springframework.web.util.NestedServletException:處理程序處理失敗;嵌套異常是java.lang.OutOfMemoryError:PermGen space

警告[RMI TCP連接(11)-192.168.56.1] ServerCommunicatorAdmin.reqIncoming服務器已決定關閉此客戶端連接。

該應用程序還使用本地ElasticSearch(不知道它是否與它有任何關係)。

請問您能解釋一下堆在不斷增長的原因,而實際的內存使用量似乎下降了嗎?

enter image description here

+0

It's複雜的說沒有看到完整的日誌文件。我會開始關閉彈性搜索和模擬搜索。當內存消耗大大增加時,您可以在一分鐘內粘貼日誌。 – paul

+0

該日誌實際上沒有任何可疑的東西 - 請求,響應+ hibernate SQL。我將嘗試在所有內容上使用DEBUG運行它。 –

+0

我現在無法真正複製它,會結束這個問題。謝謝! –

回答

1

這裏的關鍵是 「PermGen的空間」。這個空間用於加載.class文件。也許你的類路徑中有太多jar /其他庫,或者你的標準permgen大小不夠。

這裏有一個很好的說明如何設置自定義的PermGen空間爲Tomcat:

How do I properly set the permgen size?

+0

感謝您的評論,我發現我實際上使用的是Java 7,而不是像我之前想的那樣使用Java 8,因爲Java 8不再具有permgen空間。我會重新做更多的測試,並會讓你知道。 –

+0

聽起來不錯。我希望我幫你:) – Lexandro

+0

在java上沒有perm gen內存8 –