SoftReference
非効率にならない限り、できるだけ多くのメモリを使用して s を使用してキャッシュを書きたいと考えています。
オブジェクトのサイズを計算するか、使用済みメモリの近似値を取得して、使用済みサイズを推定しようとしていますJVM
が、行き止まりです。
SoftReference
javadoc には、 s がメモリ対応キャッシュに適しているとさえ記載されていますが、JVM
実装がSoftReference
s をどのように処理するかについての厳格な規則はありません。私はJVM
(バージョン6.22以上およびバージョン7)のOracle実装についてのみ話しています。
さて、私の質問(部分的、グループ化、または好きな方法で自由に答えてください):
JVM
オブジェクトの最後のアクセスを考慮して、古いものだけを削除しますか? Javadoc は次のように述べています。Virtual machine implementations are, however, encouraged to bias against clearing recently-created or recently-used soft references.
- メモリが不足するとどうなりますか? パニックになり、
JVM
すべてのオブジェクトを食べるだけですか? JVM
生き残るために必要なだけ食べて (OOME
s なし)、健康に生きるように (CPU に だけを実行させない)GC
ように指示するパラメータはありますか?