XStream を使用して XML をシリアライズ/デシリアライズします...OutOfMemory
例外が発生しました。
まず、サーバーに 500MB が割り当てられているため、エラーが発生する理由がわかりません。
問題は、トラブルを回避するためにどのような変更を加える必要があるかということです。この実装の規模を確実にしたいと考えています。
現在、各オブジェクトが最大 50 バイト、最大 60K のオブジェクトがあります。60K POJO をメモリにロードし、それらを String にシリアライズして、 を使用して Web サービスに送信しますHttpClient
。受信時に文字列全体を取得し、POJO に変換します。XML/オブジェクト階層は次のようになります。
<root>
<meta>
<date>10/10/2009</date>
<type>abc</type>
</meta>
<data>
<field>x</field>
</data>
[thousands of <data>]
</root>
POJOをメモリに保存せず、内容を単一の文字列に書き込まないことが最善の方法だと思います。代わりに、個々<data>
の POJO をストリームに書き込む必要があります。XStreamはこれをサポートしていますが、この<meta>
要素はサポートされていないようです。データは次の形式である必要があります。
<root>
<data>
<field>x</field>
</data>
[thousands of <data>]
</root>
では、ツリー全体をストリーミングする最も簡単な方法は何ですか?