10.2. エビクションリージョン


マーシャリングでは、 リージョンの概念と Region クラスは 「クラスローディングとリージョン」 でした。 リージョン内のノードのエビクション動作を定義するためにもリージョンは使用されます。 リージョン固有の設定を使用するだけでなく、 特定のリージョンを定義しなくない場合や、 事前定義されたリージョンに属さないノードに対してデフォルトのキャッシュ全体のエビクション動作を設定することもできます。 設定 XML ファイルを使用してリージョンを定義する場合、 リージョンを定義する Fqn の全要素は String オブジェクトになります。
各リージョンに対してエビクションパラメータを定義することができます。
重複するリージョンを定義することも可能です。 例えば、 1 つのリージョンを /a/b/c に定義し 、別のリージョンを /a/b/c/d (/a/b/c サブツリーの d サブツリー) に定義することが可能です。 アルゴリズムはこのような例を一貫して処理するため、 常に最初に遭遇したリージョンを選択します。 そのため、 ノード /a/b/c/d/e の処理方法をアルゴリズムが決定する必要がある場合 、定義されたリージョンを最初に見つけるまでツリーを上がります (この例の場合は /a/b/c/d)。

10.2.1. 常駐ノード

エビクションをトリガするか確認する時と実際にノードのエビクションを開始する時、 常駐と示されているノード (Node.setResident() API を使用) はエビクションポリシーによって無視されます。 例えば、 リージョンの最大ノード数が 10 に設定されている場合、 そのリージョンでノードをエビクトするか判定する際に常駐ノードは数に含まれません。 また、 リージョンのエビクションがしきい値に達した時、 常駐ノードはエビクションの対象として考慮されません。
ノードを常駐とするには、 Node.setResident() API を使用する必要があります。 デフォルトでは、 新規作成されたノードは常駐ノードにはなりません。 ノードの resident 属性はレプリケートや永続化できず、 トランザクションを意識しません。
次の常駐ノードのユースケースは、 「パス」ノードがエビクションポリシーに「雑音」を追加しないようにします。
...
   Map lotsOfData = generateData();
   cache.put("/a/b/c", lotsOfData);
   cache.getRoot().getChild("/a").setResident(true);
   cache.getRoot().getChild("/a/b").setResident(true);
...
この例では、 /a ノードと /a/b ノードはパスで、 /a/b/c ノードの存在をサポートするためのみに存在し、 データは保有しません。 そのため、 常駐ノードとするのに最適です。 /a/a/b へアクセスする際にエビクションイベントが生成されないため、 メモリ管理が向上されます。

注記

常駐ノードへ属性を追加する場合 (上記の例では cache.put("/a", "k", "v"))、 常駐ノードを非常駐ノードに戻し、 エビクションの対象となるようにしてください。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る