重複排除を実装するオープンソース プロジェクトに取り組んでいます。(プロジェクトへのリンクについては、以下の 2 つのハイパーリンクを参照してください) 現在、プロジェクトのパフォーマンスはまったく問題ありませんが、ディスクに書き込まれるブロックが増えるにつれて低下します。これは HashManager によるものです。書き込まれたブロックごとに、hashmanager は Hash-BlockId ペアを格納します。重複排除プロセスには、特定のハッシュを持つブロック識別子のリストが必要です。(使用ハッシュはCrc32) HashManagerのインターフェースについてはソースを参照。
インターフェイスの現在の実装では、リストを 256 個のファイル (crc & 0xFF) に格納し、完全なリストをメモリにロードします。別のリストが必要な場合は、前のリストが保存され、次のリストがロードされます。これによりメモリが枯渇する可能性があるという事実に加えて、これはパフォーマンスの低下を意味します。
問題を克服するために、どのような良いオプションがありますか?
(明確にするために:ブロックは完全にチェックされ、重複排除の前に一致するかどうかが確認されます)