1

序章:

私は Web アプリ (Grails) を開発しており、実稼働環境で OutOfMemoryExceptions を引き起こす大量のメモリを消費する XML 操作 (20MB を超えるファイルのアップロードとインポート) を行っています。

そこで、XMLSlurper/XMLParser/ XmlTwigのメモリ消費量を比較したいと思います(正直なところ、DOM 用の SAX パーサーを書くのが面倒です)。

私が知りたいこと:

非生産的な環境 (grails 環境ではなく単純な groovy) でいくつかのバッチ実行を開始する方法がわかりません。さまざまな実装を数回テストし、メモリ消費量(およびおそらく CPU 時間) を測定し、平均を表示したいと考えています。私の生産環境のメモリ設定がどのように設定されているか (Tomcat では -XX:MaxPermSize, ...) も重要な場合があります。それも変更するとよいでしょう。

これを行う方法について誰か考えがありますか?

4

1 に答える 1

0

これは、直接的な答えを提供するのが難しい質問です。しかし、ここに行きます...

DOM パーサーまたは Groovy の XMLSlurper のようなものを URL に使用するとうまくいくはずです (または、ファイルをサーバーにアップロードしてから XMLSlurper を使用します)。大きなファイルを扱うときはいつでも、全体をメモリにロードしてから作業を行うことを本当に避けたいと思っています。これがなぜなのかを理解しているようです各実装を比較するのはやり過ぎのように思えるので、最初からすべてをメモリにロードしない信頼できる実装を選択してください。

さらに、jvm 設定が tomcat 用である限り、利用可能なハードウェアを利用する必要があります...理由の範囲内で;)。これは、効果的に動作するために多くのメモリが必要な Java 環境で特に当てはまり、設定を最大にします (-Xmx2048m -Xms2048m -XX:MaxPermSize=256m)。

于 2013-02-01T13:22:56.933 に答える