gpt4 book ai didi

java - 使用 Wrapper 类会增加对象的大小?

转载 作者:行者123 更新时间:2023-11-30 06:15:08 26 4
gpt4 key购买 nike

简单的问题可能是..假设我有 A 类包含两个原始整数 (int),B 类包含两个 Wrapper 类 Integer。哪个物体的尺寸会更大?甲还是乙?

最佳答案

这些类的实例通常大小相同。在大多数 JVM 上,它使用 32 位引用,因此具有两个 32 位值(int 或引用)的包装器将是相同的,在 64 位 JVM 上总共大约 24 个字节。

在 64 位 JVM 中,默认 header 大小为 12 字节,引用将为 32 位压缩 Oops,8 字节对齐总大小为 24 字节。

Header - 12 bytes with 64-bit class references
int or ref - 4 bytes
int or ref - 4 bytes
align to multiple of 8 - +4 bytes
==========
Total - 24 bytes

如果引用是 64 位的(例如 > 64 GB 堆),每个引用将使用 8 个字节,总大小为 32 字节。但是,如果对齐也是 16(对于 32 - 64 GB 之间的堆),那么 int 包装器对也将是 32 字节。

如果您担心消耗的总空间,并且 Integer 没有被缓存,即是一个新的 Integer,则总空间可以是每个 Integer 16 个字节。如果 Integer 被缓存,它就不再使用任何空间。

关于java - 使用 Wrapper 类会增加对象的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com