有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用包装类增加了对象的大小?

简单的问题可能是。。 假设类A包含两个原始整数(int),类B包含两个包装类整数。 哪个对象的大小会更大?A还是B


共 (1) 个答案

  1. # 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个字节。如果整数被缓存,它不会占用更多的空间