JSP で xml ファイルからプロファイル データを読み取ることを計画しています。
これで、それを読んで重要な情報を単一のセッション変数に保存するか、xml ファイルのセクション全体を jdom ドキュメントに入れて、それを単一のセッション変数に入れることができます。
あなたの経験では、データサイズは大きなまたは無視できるほど影響しますか?
JDOM 2.0.0 - 昨日リリースされた (私はメンテナーです) メモリ フットプリントが改善されました...入力ドキュメントの 10 倍未満のメモリを使用します。さらに、XML の解析時に「SlimJDOMFactory」を使用すると、使用量がさらに少なくなります。通常の 275KB のドキュメントは、SlimJDOMFactory を使用して 1.5Meg で解析されます。http://hunterhacker.github.com/jdom/jdom2/performance.htmlで JDOM 2.0.0 のパフォーマンス メトリックを参照し、SlimJDOMFactory を検索して、(遅い) より効率的なファクトリを使用して結果を取得します。
実際には、すべて入力データのサイズに依存するため、これはあなたの質問に決して答えません。私の経験では、偏見がありますが、小さなドキュメントの場合はすべてをメモリにロードし、大きなドキュメントの場合は「汗をかく」だけの方が簡単です。
DOM を使用して XML をメモリに格納する場合には、経験則があります。XML ファイルのサイズ * 10. したがって、XML ファイルのサイズが 1MB の場合、それを格納するには 10MB のメモリが必要になります。
しかし、私の経験では、DOM ドキュメントをメモリに格納することはありません。ある学生がそれをやろうとしたことがありますが、XML ファイルは 50MB の大きさでした。メモリが不足しています。
あなたの場合、関連するすべての情報を保持できるクラスを作成し、xml を読み取ってクラスを埋めます。
プロファイル データをセッションに保存する必要は本当にありますか? 本当にいつも必要ですか?id または小さなクラスだけで十分な場合もあります。
メモリに格納するオブジェクトが多いほど、空きヒープ メモリが少なくなります。これを回避する方法はありません。
実際にはアプリケーション ドメインに依存します。
しかし、一般的には、データソース (xml ファイル) とアプリケーション ドメイン モデルの間でキャッシュ ソリューションを使用します (ehCache は私の頭の上からの 1 つです)。
キャッシュは期限切れになるか、必要に応じてクリアされるため、オブジェクトとオブジェクトが占有するヒープ メモリを適切に制御できます。