メモリがいっぱいになる前にキャッシュを空にする信頼できる方法はありますか? または、現在利用可能な「実際の」空きメモリ (ハード参照されたオブジェクト) に従ってキャッシュを制限することをお勧めします。
GC ペナルティが高いため、ソフト参照キャッシュはお勧めできません。一度制限に達すると、すべてのキャッシュ エントリをリロードする必要があります。
また、値runtime.freeMemory()
が低すぎても、次の GC サイクルの後に十分な空き領域がある可能性があるため、実際に使用されているメモリの適切な指標ではないため、値は私の目的にはそれほど信頼できません。
各プリミティブ時間が消費するメモリ量を把握しようとしたため、キャッシュの実際のメモリ使用量を把握してそれに制限をかけましたが、保存に使用されるメモリ量を把握する信頼できる方法を見つけることができませんでしたサイズ n の文字列参照。