java使用包装类增加了对象的大小? 2 周,1 日 Questions & Answers 1537 简单的问题可能是。。 假设类A包含两个原始整数(int),类B包含两个包装类整数。 哪个对象的大小会更大?A还是B
# 1 楼答案 这些类的实例通常大小相同。在大多数JVM上,它使用32位引用,因此具有两个32位值(int或references)的包装器将是相同的,在64位JVM上总共约24个字节 在64位JVM中,默认的头大小是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字节 如果您关心占用的总空间,并且该整数未被缓存(即为新整数),则每个整数的总空间可以再增加16个字节。如果整数被缓存,它不会占用更多的空间
# 1 楼答案
这些类的实例通常大小相同。在大多数JVM上,它使用32位引用,因此具有两个32位值(int或references)的包装器将是相同的,在64位JVM上总共约24个字节
在64位JVM中,默认的头大小是12字节,引用是32位的,带有压缩的Oops,8字节对齐的总大小是24字节
如果引用为64位(例如,>;64 GB堆),则每个引用将使用8个字节,总大小将为32个字节。但是,如果对齐也是16(对于32-64 GB之间的堆),那么
int
包装对也将是32字节如果您关心占用的总空间,并且该整数未被缓存(即为新整数),则每个整数的总空间可以再增加16个字节。如果整数被缓存,它不会占用更多的空间