我正在阅读Java内存管理中的文档,因为我遇到了PermSize,我无法理解.该文档称其存储"JVM存储其元数据",但我无法准确了解元数据的含义.我在google搜索并在某处读取它存储了一个值对象(用户定义的对象).
那里存放了什么样的物体?一个解释的例子会很棒.
Pas*_*ent 107
"永久代"的快速定义:
"永久代用于保存VM本身的反射数据,例如类对象和方法对象.这些反射对象直接分配给永久代,并且其大小独立于其他代." [参考文献]
换句话说,这就是类定义的地方(这解释了为什么OutOfMemoryError: PermGen space在应用程序加载大量类和/或重新部署时可能会收到消息).
请注意,这PermSize是-Xmx用户在JVM选项上设置的值的附加值.但是MaxPermSize允许JVM能够增长PermSize到指定的数量.最初加载VM时,MaxPermSize仍然是默认值(32mb for -client和64mb for -server),但在需要之前实际上不会占用该数量.在另一方面,如果你要同时设置PermSize并MaxPermSize为256MB,你会发现,整体堆增加了256MB额外的-Xmx设置.