5

我在 Ubuntu 11.10 下使用 Struts2 + Spring 和 Hibernate 框架在 NetBeans 中创建了一个项目。第一次运行没问题,但是当我第二次或第三次运行它时,我不断收到此异常。没有 Maven 一切顺利。我安装了 maven ,是的,我在 中apt-get install添加了这一行,但没有运气。如何从中获得更好的性能?export MAVEN_OPTS=-Xmx512musr/bin/mvn

4

3 回答 3

5

你应该添加这一行:

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

更多信息在这里...

于 2012-06-08T13:59:33.890 回答
4

当对象没有正确清理它们的内存时,permgen space 通常会抛出这个错误。通常是“孤岛”的原因,即引用仍然指向它们的对象,但是作为程序员的您无权访问这些引用,因为它们位于您的空间之外。您可能正在使用导致此问题的库,并且在您停止使用该库之前它可能不会消失。至于哪个图书馆,我不确定,有很多文章解释如何找到它,但这是一件苦差事,可能需要一段时间,除非你很幸运。内存分析器可以提供一些想法。

很好的解释文章

于 2012-06-08T13:55:41.123 回答
3

-Xmx512m不会帮助你,因为你正在增加堆空间。您用完了 PermGen 空间,而不是堆空间。

尝试增加 PermGen 空间并放置一些标志以使其成为垃圾。以下是更多信息:在 Tomcat 6 中重复出现“PermGen”

于 2012-06-08T13:53:35.037 回答