由于所有搜索结果都想告诉我如何计算对象(而不是类)的大小,所以我一直无济于事。
当我们定义一个类(在jar / war中带有.class文件)并将其加载到JVM中时,它将占用多少空间?显然,这取决于类中的实际情况,具有更多字段的类需要存储更多的元数据。但是,例如,如果说该类具有10个整数字段和10个其他对象的引用字段:
答案 0 :(得分:1)
每个Class
本身都是一个对象。因此,指示性的大小是在类本身上调用Instrumentation.getObjectSize()
。
您可以在此处遵循该教程: https://www.baeldung.com/java-size-of-object
然后,如果要检查MyClass
的大小,可以执行以下操作:
InstrumentationAgent.getObjectSize(MyClass.getClass());
这并不意味着它是与此类相关的唯一内存,因为JVM的类加载器,垃圾回收器和其他内部工作机制可能会保留有关该类的其他元信息。
答案 1 :(得分:0)
答案肯定会取决于JVM实现(包括此类实现的版本,平台等)。您找不到任何号码。
对于匿名内部类,这些内部类仍然具有为其生成的类名,因此应该具有零影响。