Java 6中的PermGen Space不是堆内存的一部分?

时间:2017-03-06 11:28:23

标签: java jvm heap heap-memory permgen

Java 6中的PermGen空间不是堆内存的一部分吗? 我在阅读java 7中的PermGen空间分配时得到了这个问题。 根据Java 7,它表示它是堆内存的一部分,这意味着没有固定的大小限制。因此,方法区域(PermGen)在逻辑上是堆的一部分。 这让我注意到,在java 7之前,方法区域不是堆的一部分。

如果没有,那么如何在java 6中分配PermGen以及在哪个内存下?

2 个答案:

答案 0 :(得分:0)

根据this document,permgen空间位于堆外。 但这对于oracle jvm来说,所以我相信它取决于你正在使用的jvm。

答案 1 :(得分:0)

通常,分配给JVM的整个内存被Java开发人员称为堆内存,因为堆是主要的JVM内存。但堆内存是JVM内存中的一个独立组。它有新的空间和旧的空间。 No-heap是JVM中的另一个组,它使用PermGem(永久生成)内存来存储类元数据和字符串常量。

PermGen内存从不是堆内存的一部分。它是非堆内存的一部分。但是在Java 8中,永久内存被替换为元空间以支持一些性能改进。