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

标签 java memory classloader

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

当我们定义一个类(在 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/

相关文章:

java - 通过Java程序备份和恢复MS SQL Server数据库

c - 了解 C 程序的内存布局

java - 如何从嵌入式 JAR 文件加载资源

java - 抛出 PowerMockRule ClassNotFoundException

java - 如何将 jdbc-realm 配置为 jBoss jbpm

C - 数组代码中奇怪的 Valgrind 投诉

war 应用程序中的 Java 类加载器(jar/classloader hell) quartz

tomcat6 - Web 应用程序 WAR 文件中包含的自定义 Tomcat Valve

java - 当我们将 User 对象作为键时,如何从 HashMap 获取值,如下所示

c++ - 将赋值运算符与 unique_ptr 的 vector 一起使用