在达到Max之前PermGen空间不足

时间:2013-09-02 10:00:55

标签: java tomcat memory profile permgen

我在带有JPA / Hibernate的Tomcat上运行Java Web应用程序,经常让'PermGen空间不足'。

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

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

enter image description here

非堆内存:大小正在下降(94.568.448),而最大允许5倍。这是'PermGen out of space'之前的快照(当Size = Used时)

enter image description here

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

此问题通常与某些内存泄漏有关。 PermGen或永久生成是堆的一部分,例如String个对象和Class定义被分配。当堆和/或物理内存仍有空间时,您可以轻松地耗尽PermGen。

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

我们需要查看导致此错误的代码,因为我们无法根据某些图表帮助您。如果您不了解内存管理在java中的工作方式,这些链接可能会对您有所帮助:Jvm performance enhancementsJava garbage collector

答案 2 :(得分:0)

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