方法区域和 PermGen

我试图理解HotSpot JVM的内存结构,并对“方法区域”和“PermGen”空间这两个术语感到困惑。我提到的文档说方法区域包含类和方法的定义,包括字节码。其他一些文档说它们存储在PermGen空间中。

那么我能断定这两个记忆区域是相同的吗


答案 1

您应该查看 Java 内存类型,并可以选择查看有关 Java 中的垃圾回收的本文档。后者非常冗长,两者都很有用。

实际上,方法区域是永久生成区域的一部分:

与终身一代密切相关的第三代是永久一代。永久生成是特殊的,因为它保存虚拟机所需的数据,以描述在 Java 语言级别上不具有等效性的对象。例如,描述类和方法的对象存储在永久生成中。


答案 2

您可以将“方法区域”视为“PermGen”的子集,因为永久生成空间确实包含类定义,但它也保存了滞留字符串和其他不太可能被丢弃的数据位,