首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java内存使用

java内存使用
EN

Stack Overflow用户
提问于 2010-06-07 10:18:20
回答 2查看 553关注 0票数 2

我知道我总是发布一个类似的关于数组内存使用的问题,但是现在我想发布更具体的问题。

看完这篇文章后:usage.shtml

我不明白一些事情:

  • 在不同的平台(Linux / Windows 32 / 64位)上,数据类型的大小总是相同的?所以int总是32位?
  • 当我计算内存使用量时,我必须把引用值本身也放进去吗?如果我有一个对象到一个具有int字段的类,那么它的内存将是12 (对象头)+4引用+4( int字段)+3(填充)= 24字节?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-07 11:02:32

一个int总是32位。但是,JVM规范并不要求对象的字段被连续地存储在内存中。因此,64位JVM可能会在64位边界上对齐int字段。(当然,Sun 32位JVM在32位边界上对齐8位和16位字段!)

票数 1
EN

Stack Overflow用户

发布于 2010-06-07 10:22:23

首先,是的,一个int将始终是32位,按照语言规范

您不应该(IMO)在类本身的内存使用中包含引用本身,因为它不是对象的一部分。特别是,您不知道有多少地方会引用同一个对象:如果10个不同的对象每个存储一个对您的对象的引用,您将最终支付10倍的引用费用。但是,在计算存储它的任何东西的成本时,您应该考虑到引用--因此,如果您有一个具有引用的字段的类,那么就计算那里的成本。(同样,如果要计算堆栈空间,请考虑局部变量。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2988623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档