我一直在研究 Java 内存管理和堆内存中的各个部分,例如 eden、s0、s1、old gen 和元空间。我使用 VisualGC 来跟踪堆的不同部分之间的内存填充情况。我注意到在第一次垃圾回收后元空间区域占用的内存量急剧增加。
这是 VisualGC 表示的图像:
我想了解第一次 gc 后添加到元空间的内容。我做了研究,但无法得到答案。这里有什么帮助吗?
我一直在研究 Java 内存管理和堆内存中的各个部分,例如 eden、s0、s1、old gen 和元空间。我使用 VisualGC 来跟踪堆的不同部分之间的内存填充情况。我注意到在第一次垃圾回收后元空间区域占用的内存量急剧增加。
这是 VisualGC 表示的图像:
我想了解第一次 gc 后添加到元空间的内容。我做了研究,但无法得到答案。这里有什么帮助吗?
元空间不是“满的”。根据说明,元空间的限制是 1.008G,但里面有 8.602M(初始分配为 9.125M)。这大约是限制的 1%。
元空间包含与类相关的东西;即字节码,编译的本机代码,描述符,静态。对于引入一些 Java SE 或 3rd-party 库类的典型 Java 应用程序来说,大约 8M 字节的元空间是相当少的。
我想了解第一次 gc 后添加到元空间的内容。
我怀疑这只是会计方面的事情;即元空间使用的内存量仅在 GC 运行时更新。如果您注意到,元空间使用的 2 个明显变化(在记录开始之后)都与 GC 事件同时发生。