整数与整数:关于内存

2022-08-31 22:31:21

我想知道 和 所占用的内存是否存在差异。Integer nint n

我知道通常占用4个字节,怎么样int nInteger n


答案 1

通常,热点中的 Java 对象使用的堆内存包括:

  • 一个对象标头,由几个字节的“管家”信息组成;
  • 基元字段的内存,根据其大小(int n->32 位)
  • 用于参考字段的存储器(每个 4 个字节)(整数 n ->32 位)
  • 填充:在对象数据之后可能有几个“浪费”的未使用的字节,以使每个对象从方便的字节倍数地址开始,并减少表示指向对象的指针所需的位数。

根据马克·彼得斯的建议,我想在下面添加链接 http://www.javamex.com/tutorials/memory/object_memory_usage.shtml


答案 2

Java 中的 Integer 对象占用 16 个字节。

我不知道运行64位与32位JVM是否有区别。对于基元类型这无关紧要。但是我不能肯定地说在64位系统下对象的内存占用量如何变化(如果有的话)。

您可以在此处亲自测试:

Java 提示 130:您知道自己的数据大小吗?