19.3. エビクションとパッシベーション
エントリーの 1 つのコピーがメモリーまたはキャッシュストアに維持されるようにするため、パッシベーションはエビクションと共に使用してください。
通常のキャッシュストアの代わりにパッシベーションを使用する主な理由は、パッシベーションを使用するとエントリーの更新に必要なリソースが少なくなることにあります。これは、パッシベーションではキャッシュストアへの更新が不要になるためです。
19.3.1. エビクションとパッシベーションの用途 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エビクションポリシーが原因で、パッシベーションが有効な間にキャッシュからエントリーがエビクトされた場合、結果として以下の処理が行われます。
- パッシベートされたエントリーに関する通知がキャッシュリスナーへ送信されます。
- エビクトされたエントリーが保存されます。
エビクトされたエントリーの読み出しを試みると、エントリーがキャッシュローダーよりメモリーへレイジーにロードされます。エントリーとその子エントリーは、ロードされた後にキャッシュローダーより削除され、エントリーのアクティベーションに関する通知がキャッシュリスナーへ送信されます。
19.3.2. パッシベーションが無効な場合のエビクションの例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、パッシベーションが無効な状態でエビクションを操作する間のメモリーおよび永続ストアの状態を示しています。
| 手順 | メモリー内のキー | ディスク上のキー |
|---|---|---|
keyOne の挿入 | メモリー: keyOne | ディスク: keyOne |
keyTwo の挿入 | メモリー: keyOne、 keyTwo | ディスク: keyOne、 keyTwo |
エビクションスレッドが実行され、keyOne をエビクトする | メモリー: keyTwo | ディスク: keyOne、 keyTwo |
keyOne の読み取り | メモリー: keyOne、 keyTwo | ディスク: keyOne、 keyTwo |
エビクションスレッドが実行され、keyTwo をエビクトする | メモリー: keyOne | ディスク: keyOne、 keyTwo |
keyTwo の削除 | メモリー: keyOne | ディスク: keyOne |
19.3.3. パッシベーションが有効な場合のエビクションの例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、パッシベーションが有効な状態でエビクションを操作する間のメモリーおよび永続ストアの状態を示しています。
| 手順 | メモリー内のキー | ディスク上のキー |
|---|---|---|
keyOne の挿入 | メモリー: keyOne | ディスク: |
keyTwo の挿入 | メモリー: keyOne、 keyTwo | ディスク: |
エビクションスレッドが実行され、keyOne をエビクトする | メモリー: keyTwo | ディスク: keyOne |
keyOne の読み取り | メモリー: keyOne、 keyTwo | ディスク: |
エビクションスレッドが実行され、keyTwo をエビクトする | メモリー: keyOne | ディスク: keyTwo |
keyTwo の削除 | メモリー: keyOne | ディスク: |