簡體   English   中英

Maven“線程中的異常”http-bio-8080-exec-32“java.lang.OutOfMemoryError:PermGen space”

[英]Maven “Exception in thread ”http-bio-8080-exec-32“ java.lang.OutOfMemoryError: PermGen space”

我在Ubuntu 11.10下使用Struts2 + Spring和Hibernate框架在NetBeans中創建了一個項目。 第一次運行是好的,但是當我第二次或第三次運行它時,我一直得到這個例外。 沒有Maven一切順利。 我用apt-get install安裝了maven,是的,我在usr/bin/mvn添加了這行export MAVEN_OPTS=-Xmx512m ,但沒有運氣。 如何從中獲得更好的表現?

你應該添加這一行:

export MAVEN_OPTS="-Xmx512M -XX:MaxPermSize=512M" 

請注意,有些用戶報告說雙引號存在問題,因此您可能希望使用:

export MAVEN_OPTS=-Xmx512M -XX:MaxPermSize=512M 

編輯:

由於您使用的是Tomcat,請使用以下命令:

  1. 打開tomcat / bin / catalina.sh
  2. 將此行添加到JAVA_OPTS =“ - Djava.awt.headless = true -Dfile.encoding = UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize = 256m -XX:MaxNewSize = 256m -XX:PermSize = 256m -XX :MaxPermSize = 256m -XX:+ DisableExplicitGC“
  3. 保存並退出,重新啟動Tomcat

更多信息在這里......

當對象沒有正確清理其內存時,permgen空間通常會拋出此錯誤。 通常導致“孤島”的對象仍然指向他們,但你作為程序員不能訪問這些參考,因為他們住在你的空間之外。 你可能正在使用一個導致這個問題的庫,它可能不會消失,直到你停止使用這個庫。 至於哪個圖書館,我不確定,有很多文章解釋如何找到這個,但這是一件苦差事,可能需要一段時間,除非你很幸運。 內存分析器可以提供一些想法。

好的解釋文章

-Xmx512m對你沒有幫助,因為你正在增加堆空間。 你的PermGen空間用完了,而不是堆空間。

嘗試增加PermGen空間並放置一些標記來裝飾它。 以下是更多信息: Tomcat 6中的重復“PermGen”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM