空对象/类实例的28个字节?

时间:2012-04-29 03:48:34

标签: java

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

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

  1. 为什么实例化空类或对象需要28个字节?
  2. 实例化Long对象需要29个字节,原始长8个字节,那么为什么与空类的区别仅为1个字节? JVM做了什么样的优化?
  3. 我在MacOS上使用了JDK1.6.0_30,代码可以在 https://github.com/mousator/benchmarks/blob/master/src/sk/emandem/michal/AutoboxingTypeBenchmark.java (你可以查看整个项目)

    感谢您的回答!

1 个答案:

答案 0 :(得分:2)

  1. 我不相信你的记忆测量技术。只是呼叫runtime.gc()并不一定会做任何事情。使用MemoryMeasurer等工具。
  2. 阵列产生自己的开销:通常大约12个字节;八个用于对象头,四个用于数组长度,然后每个数组条目有四个字节用于引用。 (这是在32位虚拟机上。)