jvm Java 6中的PermGen空间不是堆内存的一部分?

42fyovps  于 2022-11-07  发布在  Java
关注(0)|答案(2)|浏览(149)

Java 6中的PermGen空间不是堆内存的一部分吗?我在阅读Java 7中的PermGen空间分配时遇到了这个问题。根据Java 7,它说它是堆内存的一部分,这意味着没有固定的大小限制。所以方法区(PermGen)在逻辑上是堆的一部分。这让我注意到,在Java 7之前,方法区不是堆的一部分。
如果不是,那么PermGen在java 6中是如何分配的,在哪个内存下?

fslejnso

fslejnso1#

通常,Java开发人员将分配给JVM的全部内存称为堆内存,因为堆是占主导地位的JVM内存。但堆内存在JVM内存中是一个单独的组。它有新空间和旧空间。非堆内存是JVM中的另一个组,它使用PermGem(永久生成)内存来存储类元数据和字符串常量。
PermGen内存从来都不是堆内存的一部分。它是非堆内存的一部分。但是在Java8中,永久内存被元空间取代,以支持一些性能改进。

q35jwt9p

q35jwt9p2#

根据这篇文档,permgen空间在堆之外,但是这是针对oracle jvm的,所以我相信这取决于你使用的jvm。

相关问题