PermGen实际上代表什么?
我知道PermGen是什么,它用于什么,为什么失败,如何增加等等。
我不知道的是PermGen实际上代表的东西。 永久… Gen …什么?
有谁知道PermGen实际上代表什么?
永久的一代。 细节当然是具体的实现。
简而言之,它包含与类和实际string关联的Java对象。 在Sun的客户端实现中, classes.jsa
是通过内存映射形成初始数据的,大约有一半是只读的,一半是在写的时候。
只有旧的Java对象保存在Tenured Generation中。
PermGen被JVM用来保存加载的类。 你可以使用以下方法来增加
-XX:MaxPermSize=384m
如果您使用的是Sun JVM或OpenJDK。
所以,如果你得到一个OutOfMemoryException:PermGen,你需要使PermGen变大或者你可能会遇到类加载器的问题。
永久的一代。 有关垃圾收集器的更多详细信息,请参阅Java GC调优指南 。
PermGen代表永久代 。
这里是关于DDJ 的简短介绍
与原始问题没有真正相关的匹配,但可能有人会觉得它有用。 PermGen确实是Java用于保存类的内存领域。 所以,我们很多人都遇到了PermGen的OOM,如果有很多类的话。
自从Java 8以来,PermGen区域已经被MetaSpace区域所取代,它更加高效,并且在默认情况下是无限的(或者更准确地说 – 受到本地内存数量的限制,取决于32位或64位jvm和操作系统虚拟内存的可用性)。 但是,可以通过某些方式对其进行调整,例如指定区域的最大限制。 您可以在此博客文章中find更多有用的信息。
永久的一代
如果我没有记错的话,那么这个世代就代表着世代,就像在世代的垃圾收集器里一样(对待年轻的对象比中世纪和“永久”的对象都不同)。 地方原则表明,最近创build的对象将被首先消灭。