0

ソース URL とターゲット URL に動的に到達するために、非常に小さいサイズ (ディスク上で 2 KB) の構成 XML の要素を反復処理するために使用する for-each ループがいくつかあります。次に、(ストリーミングを実行するため) を使用してソース URL からデータを取得URLGeneratorし、XForms Submissions プロセッサを使用して XML データベースにロードします。ソース URL とターゲット URL は動的に計算され、取得と読み込みが行われる最も内側のループは合計で約 32 回発生し、毎回平均で約 4.5 MB の XML ファイル (最大で約 6 MB、最小で数 KB) が発生します。 )。これを試すたびに、permgen で実行されている Tomcat でメモリ不足エラーが発生し、ヒープ サイズが十分に割り当てられています。JVM は 32 ビット、OS は 32 ビットです。このメモリ不足エラーから抜け出す方法が必要です。

  1. 個別の XForms 送信は個別のトランザクションになると考えていたので、蓄積されず、メモリ不足の問題が発生します
  2. ドキュメント全体をメモリ内に作成する代わりに、XF​​orms Submissions プロセッサを使用してストリーミング ロードを実行する方法はありますか?
  3. それが役立つかどうかはわかりませんが、メモリ不足の問題が発生しないように、Orbeon で積極的なガベージ コレクションを実行する方法はありますか?

必要に応じて、ここにコードを投稿できます (XPL 用)。

ソースコード(それを求めるコメントへの返信)

4

1 に答える 1

0
  1. ループ内でを実行するoxf:xforms-submissionと、それらは独立して実行され、ループ内で 30 個のドキュメントをアップロードすると、最大のドキュメントに必要なメモリしか消費されません。
  2. XForms 送信では、アップロードできるように完全なドキュメントがメモリにある必要があります。ストリーミングをサポートしていません ( とは異なりますoxf:url-generator)。
  3. 多くの場合、デフォルトの VM pergen 設定は低すぎるため、permgen space を増やしてみることをお勧めします。
于 2011-06-03T00:09:55.730 に答える