我一直在寻找无法搜索不同网站,因为所有搜索结果都想告诉我如何计算对象的大小,而不是类的大小。
当我们定义一个类(在jar / war中使用.class文件)并将其加载到JVM中时,它会占用多少空间?显然它取决于类中的实际内容,具有更多字段的类具有更多要存储的元数据。但是,如果我们说例如该类有10个整数字段和10个参考字段到其他对象:
那么每个Class
本身就是一个对象。因此,指示性的大小将是在课堂上调用Instrumentation.getObjectSize()
。
你可以按照这里的教程:https://www.baeldung.com/java-size-of-object
然后,如果你想检查MyClass
的大小,你可以这样做:InstrumentationAgent.getObjectSize(MyClass.getClass());
这并不意味着它是与此类关联的唯一内存,因为JVM的类加载器,垃圾收集器和其他内部工作可能会保留有关该类的其他元信息。
答案肯定取决于JVM实现(包括此类实现的版本,平台等)。没有一个号码可以获得。
至于匿名内部类,它们仍然为它们生成了类名,所以这应该没有影响。