0

我有一个 Play 应用程序,我想在码头服务器上运行它。我使用 Play 的 buit in war generation 从应用程序中生成了一场战争;玩战争 (app) -o (output.war)

当我将生成的战争导入到 Jetty 的 webapps 并运行应用程序时; java.lang.OutOfMemoryError: PermGen 空间

我四处搜索以找到解决方案,但是增加 perm gen 大小和 jvm 参数以用于类卸载的可用解决方案都不起作用。

我厌倦了使用 Plumbr 分析 prem zen 大小,但它不会生成报告。

最后我使用了java的内置堆分析器;jmap -permstat

29928 个实习生字符串,占用 3174488 个字节。class_loader 类字节 parent_loader 还活着吗?类型

2764 15979584 空直播

总计 = 1 2764 15979584 不适用 活着=1,死亡=0 不适用

这是 jvm 开始抛出 prem gen 错误后的统计信息。类加载器大小和静态字符串非常小,小于 64 mb(我已将 prem zen 大小增加到 1gb,即使出现同样的错误)

请提出建议,因为我无法找到问题的原因。

4

1 回答 1

0
  1. Start your application with "-XX:-HeapDumpOnOutOfMemoryError" jvm option
  2. When and if you get OOM again, JVM will generate an heap dump file.
  3. Open it with Eclipse Memory Analyzer
  4. Let it generate a report for you
于 2013-05-13T16:29:39.197 回答