JVM内存中的Metaspace和Runtime常量池在哪里?

我在Java中与Metaspace混淆。 它在哪里? 一些将PermGen(Metaspace)作为堆的一部分的文章,其中一些作为堆的部分内存:

方法区(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

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

链接地址: http://www.djcxy.com/p/82847.html

上一篇: Where are Metaspace and Runtime Constant pools in JVM's memory?

下一篇: What is the use of MetaSpace in Java 8?