我正在使用嵌入式Glassfish的Maven插件 - 这是我的插件声明:
<plugin>
<artifactId>maven-glassfish-plugin</artifactId>
<packaging>maven-plugin</packaging>
<version>1.0-alpha-4</version>
<configuration>
<httpPort>8080</httpPort>
</configuration>
</plugin>
通过我的数据密集型网络应用程序几次点击后,我的PermGen空间用完了。
java.lang.OutOfMemoryError:PermGen space
我已经配置了MAVEN_OPTS以使用更多内存:
set MAVEN_OPTS=-Xmx1024m
但看起来mvn glassfish:run
产生的Java进程在占用之前只能获得大约半GB的内存。
Glassfish插件是否有任何配置设置可以提高其内存?
谢谢!
答案 0 :(得分:10)
只是澄清一下。永久生成空间包含加载的类对象和实习字符串。它被分配在Java堆的外部,如下所示:
在最近的Sun VM上,默认的最大大小为64m
(即-XX:MaxPermSize=64m
),并且适用于大多数应用程序(问题很可能与此处频繁的取消部署/重新部署有关)。我会尝试使用-XX:MaxPermSize=128m
或-XX:MaxPermSize=256m
,1024m
似乎真的超大了!
答案 1 :(得分:5)
在与一些同事进一步协商后,似乎我在Maven中增加了错误的记忆价值。
为了增加PermGen空间,我将其添加到我的MAVEN_OPTS:
set MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=1024m