1

我在带有 JPA/Hibernate 的 Tomcat 上运行 Java Web 应用程序,并且经常出现“PermGen 空间不足”。

任何人都可以解释这个图形内存配置文件吗?

堆内存:我正在运行到最大值,但仍有一些空间(2.147.483.648 Max,但使用了 1.667.155.688)

在此处输入图像描述

非堆内存:大小正在下降(94.568.448),而最大值允许增加 5 倍。这是“PermGen 空间不足”之前的快照(当 Size = Used 时)

在此处输入图像描述

我不明白这个简介。还剩下很多物理内存。

4

3 回答 3

1

这是Tomcat经典问题之一。最好的答案之一在这里:

https://stackoverflow.com/a/10392385/1314276

于 2013-09-03T20:15:05.290 回答
0

这个问题通常与一些内存泄漏有关。PermGen 或永久代是堆的一部分,例如String对象和Class定义在其中被分配。当您在堆和/或物理内存上仍有空间时,您很容易用完 PermGen。

您可以增加 perm gen 的大小,但在大多数情况下,它只会延长问题,因为您只会花一些时间。

我们需要查看导致此错误的代码,因为我们无法根据某些图表为您提供帮助。如果您不了解 java 中内存管理的工作原理,这些链接可能会对您有所帮助:Jvm 性能增强Java 垃圾收集器

于 2013-09-02T10:21:54.743 回答
0

Perm gen 空间不与 Heap 相交。您应该使用 -XX:PermSize 和 -XX:MaxPermSize 参数。

于 2013-09-02T10:34:55.363 回答