-128 ~ 127 の範囲の整数キャッシュ値: 説明とカスタマイズ
Java では、Integer クラスは -128 から 127 までの値を格納します。キャッシュ内の 127。この機能により、同じ値を持つ Integer オブジェクト間の比較における一貫性が保証されます (例: Integer.valueOf("127") == Integer.valueOf("127"))。ただし、なぜこの特定の範囲なのかという疑問が生じます。
デフォルトのキャッシュ範囲の理論的根拠
Java 言語仕様では、この範囲内の整数をキャッシュすることが義務付けられています。一般的なシナリオで頻繁に使用されます。たとえば、-128 は 8 ビットの符号付き整数値の最小値を表し、127 は最大値を表します。これらの値は、byte や short などのデータ型でよく見られます。
これらの値をキャッシュすることで、Java はパフォーマンスを最適化します。これにより、プリミティブ値をオブジェクトに変換するボックス化プロセスが、キャッシュされた範囲内の同じプリミティブ値に対して常に同じオブジェクト参照を返すことが保証されます。この動作により、比較が簡素化され、オブジェクト インスタンスの重複による意図しない等価性チェックの可能性が減ります。
キャッシュ範囲のカスタマイズ
一方、デフォルトのキャッシュ範囲は多くのニーズを満たします。アプリケーションでは、特定のシナリオでは追加の値をキャッシュする必要がある場合があります。 -XX:AutoBoxCacheMax JVM オプションを使用すると、整数キャッシュの最大サイズを指定できます。これにより、デフォルトの -128 ~ 127 の範囲を超える整数をキャッシュに含める方法が提供されます。
キャッシュ サイズのカスタマイズは実装固有であることに注意することが重要です。一部の JVM はこのオプションをサポートしている場合がありますが、サポートしていない場合もあります。さらに、より大きなキャッシュを使用すると、特に小型のデバイスでパフォーマンスが低下する可能性があります。したがって、やむを得ない理由がある場合にのみキャッシュ サイズを調整することをお勧めします。
以上がJava が -128 から 127 までの整数をキャッシュするのはなぜですか? この範囲をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。