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