キャッシュAPIを検索すると、Guavaが見つかりました。 しかし、wikiとJavadocを読んで1つの質問が発生しました.CacheBuilderが取ることができる設定のデフォルト値は何ですか? Javadocには、「これらの機能はすべてオプションです」と「強力なキー、強力な値、あらゆる種類の自動追い出しを含まないデフォルト設定で新しいCacheBuilderインスタンスを構築します」と記載されています。私の意見でGoogleの共通キャッシュ - maximumSizeのデフォルト値(およびその他の「オプション」設定) - すべての「使用可能な」メモリを使用するキャッシュが必要です
、maximumSize
のための適切なデフォルトが終わりRuntime.getRuntime().freeMemory();
に対するだろう、私は与えられたシステム上で使用可能なメモリを使用するキャッシュをしたいです。だから、どれくらいfreeMemory()
が利用可能かを尋ねる追い出し戦略が必要です(おそらくRuntime.getRuntime().maxMemory()
との相対的なもの)
"利用可能なメモリを使用するキャッシュが必要です..."あなたはこれが明確に定義されていないことを認識しなければなりません。 2つのキャッシュエントリは、それぞれ1Kのメモリを占有するオブジェクトを参照する可能性があります。しかし、一方では、参照されたオブジェクトはキャッシュ外の他のものによって参照され、他方は参照されません。それで? –
softValues()が使用されている場合、vmがその処理を決定します。私がキャッシュ内のもの(おそらく各エントリ)に多くの参照をするなら、私はヒープ空間のエラーのうちに泣くことはありません。ですから、softValuesとキャッシュされたオブジェクトの注意深い扱いで、これはうまくいくでしょうか? – dermoritz