我知道我总是发布关于数组内存使用情况的类似问题,但现在我想更具体地发布问题。
我读完这篇文章后:http://www.javamex.com/tutorials/memory/object_memory_usage.shtml
我不明白一些事情:
答案 0 :(得分:1)
首先,是的,根据the language specification,int
始终为32位。
你不应该(IMO)在类本身的内存使用中包含引用本身,因为它不是对象的一部分。特别是,您不知道有多少个地方会引用同一个对象:如果10个不同的对象各自存储对您的对象的引用,您最终将支付参考成本10次。但是,在计算存储它的任何成本时,您应该考虑该参考 - 因此,如果您有一个带有作为参考的字段的类,那么请计算那里的成本。 (同样,如果您正在计算堆栈空间,请考虑局部变量。)
答案 1 :(得分:1)
int
始终为32位。但是,JVM规范并未强制要求对象的字段连续存储在内存中。因此,可能 64位JVM可能会在64位边界上对齐int
个字段。 (当然,Sun 32位JVM在32位边界上对齐8位和16位字段!)