如何确定单个特定类定义(而不是实例化对象)的大小?具体来说,给定类使用多少PermGen内存?如果无法计算,它大致对应于未压缩的.class文件的文件系统大小?
我已经阅读了Jon Masamitsu关于PermGen所包含内容的文章:
- Java类的基本字段 - 类的方法(包括字节码) - 类的名称(以指向永久代中字符串的对象的形式) - 常量池信息(从类文件中读取的数据,请参见JVM规范的第4章获取所有详细信息)。 - 与类相关的对象数组和类型数组(例如,包含对方法引用的对象数组)。 - JVM创建的内部对象(例如java/lang/Object或java/lang/exception) - 编译器(JIT)用于优化的信息
最后两个可能与单个类定义无关。我对其余部分感兴趣。
我唯一找到的近似值是java.lang.instrument.Instrument.getObjectSize(myObject.getClass());,但描述中的“某些或全部”让我对准确性不太有信心。有什么想法吗?我觉得我可能忽略了一些简单的东西。
我已经阅读了Jon Masamitsu关于PermGen所包含内容的文章:
- Java类的基本字段 - 类的方法(包括字节码) - 类的名称(以指向永久代中字符串的对象的形式) - 常量池信息(从类文件中读取的数据,请参见JVM规范的第4章获取所有详细信息)。 - 与类相关的对象数组和类型数组(例如,包含对方法引用的对象数组)。 - JVM创建的内部对象(例如java/lang/Object或java/lang/exception) - 编译器(JIT)用于优化的信息
最后两个可能与单个类定义无关。我对其余部分感兴趣。
我唯一找到的近似值是java.lang.instrument.Instrument.getObjectSize(myObject.getClass());,但描述中的“某些或全部”让我对准确性不太有信心。有什么想法吗?我觉得我可能忽略了一些简单的东西。