我一直在研究Java内存管理和堆内存中的各个部分,比如eden、s0、s1、old gen和metaspace。我使用VisualGC来跟踪内存是如何在堆的不同部分之间填充的。我注意到,在第一次垃圾回收之后,元空间区域中占用的内存量急剧增加。
下面是VisualGC表示的图像:

我想知道在第一次gc之后,元空间中添加了什么内容。我做了调查,但找不到答案。这里有帮助吗?
发布于 2018-11-24 09:20:30
元空间不是“满”的。根据标题,元空间的限制是1.008G,但你有8.602M的空间( 9.125M的初始分配)。这大约是限制的1%。
元空间包含与类相关的内容;即字节码、编译后的本机代码、描述符、静态。对于引入几个Java SE或第三方库类的典型Java应用程序来说,大约8M字节的元空间是相当适中的。
我想知道在第一次gc之后,元空间中添加了什么。
我怀疑这只是一个记账问题;也就是说,元空间使用的内存量只在GC运行时更新。如果您注意到,元空间使用的两个明显变化(在记录开始之后)都与GC事件重合。
https://stackoverflow.com/questions/53450931
复制相似问题