JVM内存中的元空间和运行时常量池在哪里?



我对Java中的元空间感到困惑。它在哪里?一些文章将PermGen(Metaspace(视为堆的一部分,其中一些作为内存的堆积部分:

方法区(元空间的一部分(是这里堆的一部分:http://javapapers.com/core-java/java-jvm-run-time-data-areas/

这里不是:http://blog.jamesdbloom.com/JVMInternals.html

我在运行时常量池方面遇到了同样的问题。有些文章把它当作堆的一部分,其中一些文章像方法区的一部分。

这取决于 JVM 实现,或者只是 Java 发布期间的更改(文章很旧(?如果是关于JVM实现,它在HotSpot中是如何工作的?

谢谢!

这些内存区域的位置在很大程度上是概念性的,因为它们使用虚拟内存。 Perm Gen 和 MetaSpace 不会占用堆空间,也不会被视为最大堆大小的一部分,即 -Xmx

它们是

像堆这样的托管内存区域,但我不认为它们是堆的一部分,而是一个单独的区域。

最新更新