2

我正在为嵌入式 Glassfish 使用 Maven 插件 - 这是我的插件声明:

<plugin>
  <artifactId>maven-glassfish-plugin</artifactId>
  <packaging>maven-plugin</packaging>
  <version>1.0-alpha-4</version>
  <configuration>
    <httpPort>8080</httpPort>
  </configuration>
</plugin>

在我的数据密集型 Web 应用程序中单击几下后,我的 PermGen 空间用完了。

java.lang.OutOfMemoryError: PermGen 空间

我已经将 MAVEN_OPTS 配置为使用更多内存:

set MAVEN_OPTS=-Xmx1024m

但看起来生成的 Java 进程mvn glassfish:run在占用之前只获得了大约 0.5 GB 的内存。

Glassfish 插件是否有任何配置设置来增加其内存?

谢谢!

4

2 回答 2

10

只是为了澄清。永久代空间包含加载的类对象和内部字符串。它在 Java 堆之外分配,如下所示:

替代文字

在最近的 Sun VM 上,默认的最大大小是64m(ie -XX:MaxPermSize=64m),并且对于大多数应用程序来说已经足够了(这个问题很可能与这里频繁的取消部署/重新部署有关)。无论如何,我会尝试使用-XX:MaxPermSize=128mor -XX:MaxPermSize=256m1024m看起来真的超大了!

于 2010-06-04T15:47:00.693 回答
5

在与一些同事进一步协商后,似乎我在 Maven 中增加了错误的内存值。

为了增加 PermGen 空间,我将它添加到我的 MAVEN_OPTS 中:

set MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=1024m
于 2010-06-04T14:44:09.057 回答