题
我知道PermGen的是什么,它的使用,失败的原因,如何增加它等等。
我不知道什么是PermGen的真正代表。永久... ...代什么?
有谁知道什么PermGen的真正代表?
解决方案
永久代。细节当然实施方式特定的。
简言之,它包含的Java对象与类相关联的和实习字符串。在Sun公司的分享在客户端执行,classes.jsa
是存储器映射,以形成所述初始数据,其中约一半只读和半写入时复制。
这仅仅是旧保持在年老代Java对象。
其他提示
PermGen的用于由JVM以保持装载的类。可以使用增加它:
-XX:MaxPermSize=384m
如果您正在使用Sun JVM或OpenJDK的。
所以,如果你得到一个OutOfMemoryException:PermGen的需要要么使PermGen的更大,或者您可能有类加载器的问题。
。永久代。详情请参见java的 GC优化指南垃圾收集器。
没有真正相关的匹配原来的问题,但可能有人会觉得它有用。 PermGen的的确是一块内存区域,其中Java中使用,以保持它的类。所以,我们很多人都穿过OOM在PermGen的来了,如果有,例如大量的类。
由于Java 8,PermGen的区域已被取代的元空间区域,这是更高效的并且是通过默认无限(或更确切地说 - 由本机内存的量根据32或64位JVM和OS虚拟存储器可用性的限制,) 。然而,它是可以调整它在某些方面,例如通过指定的区域中的最大限制。您可以在这个博客帖子。
PermGen的代表永久代
如果正确地记得的根表示的产生,如在世代无用单元收集器(即比中期寿命和“永久”的对象不同地对待年轻的对象)。局部性的原则表明,最近创建的对象将被首先消灭。
PermGen的代表持久代。这是JVM内存的地区之一。它通过使用称为MaxPermSize参数标志是具有固定大小的堆的一部分。
为什么取名 “PermGen的”?的
这PermGen的是在Java中的早期命名。 PermGen的电源保持加载类的所有元数据。但问题是,一旦一个类被加载,它会留在JVM直到JVM关机。所以名字PermGen的是选择那个。但后来,类动态加载进入了画面,但名字没有改变。但随着的Java 8 后,他们已经解决了这个问题为好。现在的 permagen 强>更名为的元空间强>使用动态存储器大小。