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

时间:2017-03-26 14:53:27

标签: java jvm pool metaspace

我在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中是如何工作的?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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