性能问答>metaspace增长控>
1回复

metaspace增长控



为什么有时候没有类加载发生(通过traceclassloading参数和jstat -class命令监控,都能明确看到确实没有类加载发生),metaspace空间还在缓慢增长,每分钟涨几KB到几十KB

756 阅读
请先登录,再评论

在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文件,所以在不存在的情况下也会进行创建
其它的好像不会持续使用元数据区

19月前