为什么会发生Permgen OutOfMemeoryError?

时间:2013-11-21 06:24:53

标签: java jvm

直到今天,我知道permgen空间有一些限制,当这个限制用完时,OutOfMemoryError会来,我认为这是正确的,因为我看到了OutOfMemoryError Permgen空间。 / p>

但是Inside the Java Virtual Machine引用,

  

无需修复方法区域的大小。在Java应用程序运行时,虚拟机可以扩展和收缩方法区域以满足应用程序的需要。

那么,当JVM可以扩展时,为什么会出现错误呢?扩张是否有限制?

1 个答案:

答案 0 :(得分:3)

Method Area是较大PermGen或非堆内存区域的一部分。 PermSize设置可修复PermGen可以使用的最大内存。由于Method AreaPermGen子部分,只要整体PermGen尺寸保持指定限制,它就可以根据需要进行扩展。

PermGen空间要求超出指定限制时(比如因为展开Method Area),OutOfMemoryError被抛出。