我一直在寻找不同的网站,但没有结果,因为所有搜索结果都想告诉我如何计算对象的大小,而不是类的大小。
当我们定义一个类(在 jar/war 中使用 .class 文件)并将其加载到 JVM 中时,它会占用多少空间?显然这取决于类中的实际事物,具有更多字段的类可以存储更多元数据。但如果我们举例来说,该类有 10 个整数字段和 10 个其他对象的引用字段:
- 如果有 1,000 个这样的类(全部扩展同一个基类),会在 JVM 中占用多少额外空间?
- 如果它们是匿名类而不是定义类,情况会发生变化吗?
最佳答案
好吧,每个Class
本身就是一个对象。因此,指示性大小是在类本身上调用 Instrumentation.getObjectSize()
。
您可以按照此处的教程进行操作: https://www.baeldung.com/java-size-of-object
然后,如果您想检查 MyClass
的大小,您可以执行以下操作:
InstrumentationAgent.getObjectSize(MyClass.getClass());
这并不意味着它是与此类关联的唯一内存,因为类加载器、垃圾收集器和 JVM 的其他内部工作可能会保留有关该类的其他元信息。
关于java - 一个类在 JVM 中占用多少空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458851/