SoftReference非効率にならない限り、できるだけ多くのメモリを使用して s を使用してキャッシュを書きたいと考えています。
オブジェクトのサイズを計算するか、使用済みメモリの近似値を取得して、使用済みサイズを推定しようとしていますJVMが、行き止まりです。
SoftReferencejavadoc には、 s がメモリ対応キャッシュに適しているとさえ記載されていますが、JVM実装がSoftReferences をどのように処理するかについての厳格な規則はありません。私は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生き残るために必要なだけ食べて (OOMEs なし)、健康に生きるように (CPU に だけを実行させない)GCように指示するパラメータはありますか?