6

多数の 8 ビット値に対してスペース効率の良い 2D 配列を作成する必要があります。コードの再利用を可能にするために、抽象化とジェネリックのいくつかのレイヤーを使用してクラスを作成し始めました。具象クラスを実装すると、プリミティブ型をジェネリック クラス引数として渡すことができず、ラッパー クラスを使用する必要があることに気付きました。空間効率が気になるので、知っておく必要があります:ラッパー クラスを使用した配列とプリミティブ配列の空間効率の違いは何 ですか?Byte byte

4

3 に答える 3

3

http://www.javamex.com/tutorials/memory/object_memory_usage.shtml による

バイト[] サイズ ~= 12 + 長さ

Byte[] サイズ ~= 12 + 20 * 長さ (20 = 16 + 4 1 Byte オブジェクトのサイズ + 4 バイト参照)

そのため、Byte[] は byte[] の 20 倍のメモリを必要とする場合があります。実際には最大であり、Byte の作成方法によって異なります。new Byte は常に新しいオブジェクトであり、Byte.valueOf は常にキャッシュされたインスタンスです。また、CPU にも依存します。x64 の場合、各参照には 8 バイトが必要です。

于 2013-04-03T13:46:46.040 に答える