我知道PermGen是什么,它用于什么,它失败的原因,如何增加它等等.
我不知道的是PermGen实际上代表什么.永久......根......什么?
有谁知道PermGen实际上代表什么?
永久代.细节当然是特定于实现的.
简而言之,它包含与类和实习字符串相关联的Java对象.在Sun的客户端实现中,共享开启,classes.jsa
内存映射形成初始数据,大约一半只读,一半写入.
仅旧的Java对象保留在Tenured Generation中.
JVM使用PermGen来保存加载的类.您可以使用以下方法增加它
-XX:MaxPermSize=384m
如果您使用的是Sun JVM或OpenJDK.
因此,如果你得到一个OutOfMemoryException:PermGen你需要使PermGen更大或者你可能遇到类加载器问题.
永久代.有关垃圾收集器的更多详细信息,请参阅java GC调整指南.
与原始问题没有真正相关的匹配,但可能有人会发现它很有用.PermGen确实是Java用于保存其类的内存区域.因此,我们中的许多人在PermGen中遇到过OOM,如果有的话,例如很多课程.
从Java 8开始,PermGen区域已被MetaSpace区域取代,MetaSpace区域更高效,默认情况下无限制(或者更确切地说 - 受本机内存量的限制,具体取决于32或64位jvm和OS虚拟内存可用性).但是,可以通过某种方式对其进行调整,例如通过指定区域的最大限制.您可以在此博客文章中找到更多有用的信息.
PermGen代表永久世代.
这是关于DDJ 的简要介绍