直到今天,我知道permgen
空间有一些限制,当这个限制用完时,OutOfMemoryError
会来,我认为这是正确的,因为我看到了OutOfMemoryError
Permgen空间。 / p>
但是Inside the Java Virtual Machine引用,
无需修复方法区域的大小。在Java应用程序运行时,虚拟机可以扩展和收缩方法区域以满足应用程序的需要。
那么,当JVM可以扩展时,为什么会出现错误呢?扩张是否有限制?
答案 0 :(得分:3)
Method Area
是较大PermGen
或非堆内存区域的一部分。 PermSize
设置可修复PermGen
可以使用的最大内存。由于Method Area
是PermGen
的子部分,只要整体PermGen
尺寸保持指定限制,它就可以根据需要进行扩展。
当PermGen
空间要求超出指定限制时(比如因为展开Method Area
),OutOfMemoryError
被抛出。