Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
据我了解,JVM 内的Native Area完全禁止垃圾收集器使用。元空间所在的Native Area内部。在前面提到的元空间中,我们有常量池、字段和方法数据等区域。
由于本机区域是由 C++ 内存管理管理的(或者至少我是这么理解的),为什么不是固定大小的 Metaspace,而是根据需要多少内存而动态增长,不会运行出记忆?元空间是否允许垃圾收集器,但本机区域的其余部分不允许?C++ 是否动态管理那里的内存?
那个元空间怎么来的,不是固定大小的
MaxMetaSpaceSize您可以通过在命令行上设置值来限制大小。
MaxMetaSpaceSize
...不会耗尽内存吗?
是的,它确实内存不足。当它超过可用内存的使用量并会出现java.lang.OutOfMemoryError: Metaspace异常。
java.lang.OutOfMemoryError: Metaspace
元空间中是否允许垃圾收集器
是的。GC 将收集 Java 堆和元空间,但不收集本机堆。它由拥有它的本机代码的任何人管理。
参考 :
3.2 理解 OutOfMemoryError 异常
关于 G1 垃圾收集器、永久代和元空间