为什么有时候没有类加载发生(通过traceclassloading参数和jstat -class命令监控,都能明确看到确实没有类加载发生),metaspace空间还在缓慢增长,每分钟涨几KB到几十KB
在memory.cpp中有如下枚举类定义: enum Type { // Types are MetaspaceObj::ClassType, MetaspaceObj::SymbolType, etc // METASPACE_OBJ_TYPES_DO(METASPACE_OBJ_TYPE_DECLARE)
UnknownType, ClassType, SymbolType, TypeArrayU1Type, TypeArrayU2Type, TypeArrayU4Type, TypeArrayU8Type, TypeArrayOtherType, MethodType, ConstMethodType, MethodDataType, ConstantPoolType, ConstantPoolCacheType, AnnotationType, MethodCountersType, _number_of_types
}; 这些枚举常量指出了元数据区中存储的数据类型 MethodDataType和MethodCountersType会在系统运行过程中不断收集运行时信息,辅助JIT编译。所以就会从元数据区分配内存来存储这些信息,这是最主要的 如果是数组类型,那么数组类型由于没有对应的Class文件,所以在不存在的情况下也会进行创建 其它的好像不会持续使用元数据区
在memory.cpp中有如下枚举类定义:
enum Type {
// Types are MetaspaceObj::ClassType, MetaspaceObj::SymbolType, etc
// METASPACE_OBJ_TYPES_DO(METASPACE_OBJ_TYPE_DECLARE)
};
这些枚举常量指出了元数据区中存储的数据类型
MethodDataType和MethodCountersType会在系统运行过程中不断收集运行时信息,辅助JIT编译。所以就会从元数据区分配内存来存储这些信息,这是最主要的
如果是数组类型,那么数组类型由于没有对应的Class文件,所以在不存在的情况下也会进行创建
其它的好像不会持续使用元数据区