大量のデータがある場合、主なことは、すべてのデータを一度にメモリにロードする必要がないようにすることです(大量のメモリを使用し、IOと処理の重複を防ぐため)。悲しいことに、ほとんどのDOMおよびDOMに似たライブラリ(DOM4Jなど)はまさにそれを実行していると思います。そのため、大量のXMLを効率的に処理するにはあまり適していません。
代わりに、SAXやStAXなどのストリーミングAPIの使用を検討してください。私の経験では、StAXの方が通常は使いやすいです。
SAXのパフォーマンスでDOMの利便性を提供しようとする他のAPIがあります。Javolutionは1つかもしれません。VTD-XMLは別のものです。しかし、正直なところ、StAXは非常に扱いやすいと思います。基本的には派手なストリームなので、ストリームからテキストファイルを読んでいるのと同じように考えます。
試すかもしれないことの1つは、JAXBとStAXを組み合わせることです。アイデアは、StAXを使用してファイルをストリーミングし、次にJAXBを使用してその中のチャンクをアンマーシャリングすることです。たとえば、Atomentry
フィードを処理している場合は、それを開いてヘッダーを超えて読み取り、要素を一度に1つずつオブジェクトにアンマーシャリングするループで作業できます。これは、フォーマットがAtomのような独立した要素のシーケンスで構成されている場合にのみ実際に機能します。XHTMLのようなよりリッチなものではほとんど役に立たないでしょう。この例は、JAXBリファレンス実装と男のブログ投稿で見ることができます。