[英]PermGen space Memory leak
org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.OutOfMemoryError: PermGen space
15到20分鍾后,部署應用程序且服務器掛起時出現此錯誤。
產生PermGen錯誤的原因可能非常具體。 但..
用(在JAVA_OPTS中)為tomcat JVM分配更多空間
-XX:MaxPermSize=256m
或任何您想要的尺寸。
請看一下http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/
解決方案是增加tomcat服務器的catalina.bat
的PermGen
堆大小; 這可以為您提供一些喘息的空間,但是一段時間之后,最終它還會在java.lang.OutOfMemoryError: PermGen
空間中返回。
Follow these steps to increase the PermGen Heap size:
1) Go to Tomcat installation directory i.e C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.14\bin in Windows.
2) Add JAVA_OPTS in your catalina.bat
set JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"
增加PermGen空間可以防止java.lang.OutOfMemoryError: PermGen
Tomcat中的java.lang.OutOfMemoryError: PermGen
只能使用一段時間,並且最終會根據您重新部署Web應用程序的次數而發生,最好是找出有問題的類,該類會導致tomcat中的內存泄漏並修復它。
當您遇到內存泄漏時,表明您的應用程序中存在永久世代泄漏,這意味着每當您在應用程序服務器中重新部署應用程序時,都會留下很多類。 這些舊的類定義最終出現在您的JVM永久代中,耗盡了寶貴的內存,因此解決方案永遠不會增加Permgen的大小,這個“解決方案”就是一顆定時炸彈。
與其他類型的內存泄漏一樣, 也沒有黃金工具或固定的操作列表可用來神奇地解決問題。 有很多可能的情況和解決方法。
話雖如此,我建議您使用Plumbr ( 官方網站 ),在這里您可以找到非常有用的解決方法 :
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.