我在带有JPA / Hibernate的Tomcat上运行Java Web应用程序,经常让'PermGen空间不足'。
有人可以解释这个图形内存配置文件吗?
堆内存:我正在运行到最大值,但仍有一些空间(2.147.483.648 Max,但使用的是1.667.155.688)
非堆内存:大小正在下降(94.568.448),而最大允许5倍。这是'PermGen out of space'之前的快照(当Size = Used时)
我不明白这个档案。还剩下很多物理内存。
答案 0 :(得分:1)
这是Tomcat经典问题之一。最好的答案之一是:
答案 1 :(得分:0)
此问题通常与某些内存泄漏有关。 PermGen或永久生成是堆的一部分,例如String
个对象和Class
定义被分配。当堆和/或物理内存仍有空间时,您可以轻松地耗尽PermGen。
你可以增加烫发的大小,但在大多数情况下,它只会延长问题,因为你只需花一些时间。
我们需要查看导致此错误的代码,因为我们无法根据某些图表帮助您。如果您不了解内存管理在java中的工作方式,这些链接可能会对您有所帮助:Jvm performance enhancements, Java garbage collector
答案 2 :(得分:0)
Perm gen空间与Heap不相交。您应该使用-XX:PermSize和-XX:MaxPermSize参数。