9.2. エビクション


エビクションは、Data Grid が使用するメモリー量を管理する方法を提供します。

Data Grid を使用すると、データコンテナーの最大サイズを設定できます。エビクションはキャッシュからエントリーを削除し、Data Grid が最大サイズを超えないようにします。

注記

エビクションはメモリーからエントリーを削除しますが、永続的なキャッシュストアからは削除しません。

9.2.1. エビクションの仕組み

Data Grid エビクションは、データコンテナーからエントリーを削除して、新規エントリーを追加するときに領域を作成します。

重要

データの損失を防ぐために、エビクションを有効にする場合、常に永続キャッシュストアを設定する必要があります。

Data Grid エビクションは、以下の 2 つの設定に依存します。

  • データコンテナーのサイズ。
  • エビクションストラテジー

データコンテナーサイズの算出

データコンテナーの最大サイズを設定し、Data Grid がキャッシュエントリーを以下のように保存するかどうかを指定します。

  • Java ヒープのオブジェクト。
  • Java ヒープのバイナリー byte[]
  • ネイティブメモリーのバイト (オフヒープ)。
ストレージタイプデータコンテナーのサイズは以下のように計算されます。

オブジェクト

エントリー数

バイナリー

エビクションタイプが COUNT の場合のエントリー数。
エビクションタイプが MEMORY の場合のメモリー量(バイト単位)。

off-heap

エビクションタイプが COUNT の場合のエントリー数。
エビクションタイプが MEMORY の場合のメモリー量(バイト単位)。

注記

MEMORY を使用する場合、Data Grid は HotSpot JVM に対して最適化されたデータコンテナーの概算サイズのみを判別できます。

オフヒープストレージで MEMORY を使用する場合、計算はヒープ上の近似値になります。

キャッシュエントリーのエビクト

データコンテナーでエントリーが追加または変更されると、Data Grid は現在のエビクションサイズを最大サイズと比較します。現在のサイズが最大値を超えると、Data Grid はエントリーをエビクトします。

エビクションは、最大サイズを超えるエントリーを追加するスレッドですぐに行われます。

たとえば、以下の設定について考えてみましょう。

<memory>
  <object size="50" />
</memory>

この場合、エントリーはオブジェクトとして保存され、データコンテナーの最大サイズは 50 エントリーです。

データコンテナーに 50 エントリーがあり、put() リクエストが新規エントリーの作成を試みると、Data Grid はエビクションを実行します。

エビクションストラテジー

ストラテジーは、Data Grid のエビクションを実行する方法を制御します。エビクションは手動で実行することも、Data Grid を以下のいずれかを実行するように設定したりできます。

  • 古いエントリーを削除して、新しいエントリー用の領域を作成します。
  • ContainerFullException を出力し、新規エントリーが作成されないようにします。

    例外エビクションストラテジーは、2 フェーズコミットを使用するトランザクションキャッシュでのみ動作しますが、1 フェーズコミットまたは同期の最適化とは関係しません。

注記

Data Grid には、TinyLFU と呼ばれる Least Frequently Used (LFU) キャッシュ置換アルゴリズムのバリエーションを実装する Caffeine キャッシングライブラリーが含まれています。オフヒープストレージの場合、Data Grid は LeastRecent Used (LRU) アルゴリズムのカスタム実装を使用します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.