JVM metaspace(元空间)

2025/07/13

元空间共享字节码(可回收)

意图:存储类的元信息。

https://stuefe.de/posts/metaspace/what-is-metaspace/

类的元信息。

类元信息不是 java 对象,不在 Java 堆中:

何时被释放:

类下没有任何实例

被释放的空间通常会被保留,并不会归还给 OS。

设置空间大小的两个参数

参数名描述
-XX:MaxMetaspaceSizeMetaspace 最大空间。默认无限制
-XX:CompressedClassSpaceSize

metaspace 分为两块

metaspace

Metaspace used 2677K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 279K, capacity 386K, committed 512K, reserved 1048576K

committed: 向 jvm 申请的内存(>=used, 因为你去申请的一般都会超过你使用的)

userd: 已使用的内存

参考

https://www.javadoop.com/post/metaspace

这个是上面这个的一个作者的翻译 + 理解,可以先看下英文版,再看下这个作者的。

https://openjdk.org/jeps/122

这个没咋看懂,理解的比较少。