我在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中是如何工作的?
谢谢!
答案 0 :(得分:1)
这些内存区域在很大程度上是因为它们使用虚拟内存。 Perm Gen和MetaSpace不会占用堆空间,也不会将其视为最大堆大小的一部分,即-Xmx
它们是像堆一样的托管内存区域,但我不认为它们是堆的一部分,而是一个单独的区域。