整数クラスのキャッシュ: -128 ~ 127 の範囲の探索
Java の Integer クラスは、頻繁に保存することでパフォーマンスを最適化するキャッシュを備えています。要求された値。ただし、Integer.valueOf() によってキャッシュされる -128 ~ 127 の特定の範囲については、いくつかの疑問が生じます。
なぜ -128 ~ 127 の範囲なのでしょうか?
この範囲Java 言語仕様 (JLS) によって定義されており、Integer にボックス化する場合、この範囲内の int 値と short 値を義務付けています。オブジェクトは常に同一の参照を生成します。この要件により、一般的に使用される値について、小型デバイスのパフォーマンスを損なうことなく、望ましい動作が確実に達成されます。
キャッシュ範囲の背後にある理論
キャッシュは、値を減らすことでパフォーマンスを最適化します。頻繁に使用される値に新しい Integer オブジェクトを割り当てることに関連するオーバーヘッド。これは、数値がゼロ付近に集中する傾向があり、-128 ~ 127 の範囲内の整数が繰り返し使用される可能性が高い一般的なシナリオで特に有益です。
指定された範囲を超えたキャッシュ
JLS では -128 ~ 127 の範囲内のキャッシュが必要ですが、実装では改善のためにこの範囲を拡張する場合があります。 効率。 JVM オプション「-XX:AutoBoxCacheMax=」を使用すると、開発者はより大きなキャッシュ サイズを指定でき、デフォルトの範囲を超える値をキャッシュできるようになります。ただし、このオプションの可用性は JVM 実装によって異なる場合があることに注意することが重要です。
頻繁なリクエストのキャッシュで特定の値を無視する理由
JLS は無視しません。キャッシュに特定の範囲を指定する理由についての明確な説明を提供します。ただし、パフォーマンスのトレードオフやレガシー コードに対処する必要性などの要因が、キャッシュが保証される特定の範囲を定義する決定に影響を与えた可能性があります。
以上がJava の整数クラスが -128 から 127 までの値のみをキャッシュするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。