一个类在JVM中占用多少空间?

问题描述 投票:0回答:2

我一直在寻找无法搜索不同网站,因为所有搜索结果都想告诉我如何计算对象的大小,而不是类的大小。

当我们定义一个类(在jar / war中使用.class文件)并将其加载到JVM中时,它会占用多少空间?显然它取决于类中的实际内容,具有更多字段的类具有更多要存储的元数据。但是,如果我们说例如该类有10个整数字段和10个参考字段到其他对象:

  • 在JVM中需要多少额外的空间来说,这些类中有1000个(都扩展了相同的基类)?
  • 如果它们是匿名类而不是已定义的类,它会改变吗?
java memory classloader
2个回答
1
投票

那么每个Class本身就是一个对象。因此,指示性的大小将是在课堂上调用Instrumentation.getObjectSize()

你可以按照这里的教程:https://www.baeldung.com/java-size-of-object

然后,如果你想检查MyClass的大小,你可以这样做:InstrumentationAgent.getObjectSize(MyClass.getClass());

这并不意味着它是与此类关联的唯一内存,因为JVM的类加载器,垃圾收集器和其他内部工作可能会保留有关该类的其他元信息。


0
投票

答案肯定取决于JVM实现(包括此类实现的版本,平台等)。没有一个号码可以获得。

至于匿名内部类,它们仍然为它们生成了类名,所以这应该没有影响。

© www.soinside.com 2019 - 2024. All rights reserved.