int と Integer ではどちらがより多くのメモリを消費しますか?

Java では、int と Integer の両方が整数型データを表すために使用されますが、これらの間にはメモリ フットプリントなど、いくつかの重要な違いがあります。簡単に言うと:

1. Int は、整数値を直接格納する Java のプリミティブ データ型 (プリミティブ型) です。32 ビット システムでは、int は 4 バイト (32 ビット) を占有し、64 ビット システムでは、int も 4 バイトを占有します。

2. Integer は Java のラッパー クラス (ラッパー クラス) の 1 つで、int をオブジェクトに変換する方法を提供します。整数オブジェクトには、int フィールドと関連メソッドが含まれます。32 ビット システムおよび 64 ビット システムでは、Integer オブジェクトは少なくとも 16 バイト (128 ビット) を占有します。これには、オブジェクトのヘッダー オーバーヘッド、int フィールドのストレージ、およびその他のオブジェクト管理オーバーヘッドが含まれます。

要約すると、メモリ使用量の観点から見ると、int は Integer よりもはるかに少ないメモリを占有します。

次に、int と Integer のメモリ使用量を示す特定のコードのデモを見てみましょう。

public class MemoryUsageDemo {
    
    
    public static void main(String[] args) {
    
    
        int primitiveInt = 42;
        Integer integerObject = 42;

        long primitiveIntSize = MemoryUtil.sizeOf(primitiveInt);
        long integerObjectSize = MemoryUtil.sizeOf(integerObject);

        System.out.println("int size: " + primitiveIntSize + " bytes");
        System.out.println("Integer size: " + integerObjectSize + " bytes");
    }
}

上記のコードは、オブジェクトのサイズを測定するためにサードパーティのライブラリ MemoryUtil を使用していることに注意してください。オブジェクトのメモリ使用量を測定するには、Java Object Layout (JOL) などのツールを使用する必要があります。この例では、int のサイズは 4 バイトである必要があり、Integer はオブジェクトであり、追加のオーバーヘッドも含まれているため、4 バイトより大きくする必要があります。

概要: メモリ使用量の観点から見ると、int はプリミティブ データ型であるためメモリ使用量が少なくなりますが、Integer はオブジェクトであるため追加のオーバーヘッドが必要です。ただし、場合によっては、コレクション クラスに格納するためにオブジェクトに変換する必要がある int などの Integer オブジェクトを引き続き使用します。

おすすめ

転載: blog.csdn.net/cz_00001/article/details/132500623