java - 28 个字节用于空对象/类实例?

标签 java

我做了一些基准测试,比较了 int 与 Integer、long 与 Long、空类实例与具有 long 值的类实例的性能。

我有几个问题我自己无法回答:

  1. 为什么空类或对象的实例化需要 28 个字节?
  2. Long 对象的实例化需要 29 个字节,原始 long 8 个字节,那么为什么与空类的差异只有 1 个字节? JVM 在做什么优化?

我在 MacOS 上使用 JDK1.6.0_30,代码可以在 https://github.com/mousator/benchmarks/blob/master/src/sk/emandem/michal/AutoboxingTypeBenchmark.java (你可以 checkout 整个项目)

谢谢解答!

最佳答案

  1. 我不相信你的内存测量技术。仅调用 runtime.gc() 不一定会执行任何操作。使用类似 MemoryMeasurer 的工具.
  2. 数组会产生自己的开销:通常为 12 个字节;八个用于对象头,四个用于数组长度,然后每个数组条目四个字节用于引用。 (这是在 32 位虚拟机上。)

关于java - 28 个字节用于空对象/类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10369532/

相关文章:

java - 尝试在 Java 中创建 json 对象但获取嵌套数组?如何以更好的方式做到这一点?

java - 在 REST 帖子上发回文件列表

java - 网址有效字符。 java验证

java - 我如何将 java 进程作为 Windows Server 2003 服务运行?

java - 如何修复java中字符串分割的索引越界异常?

java - JList - 添加滚动按钮

java - 在 Runnable 线程中访问 Spring bean

java - 如何在Edittext afterTextChanged 中使用两位数?

java - 如何在 Java 应用程序之间共享 .jar 文件

java - 模式匹配获取字符的 lastindex