4

ほとんどが Junit 3.x の大規模なテスト スイートを実行すると、Eclipse が機能しなくなり、ロックアップすることに気付きました。多くのヒープと perm 生成 (1200m と 400m) を割り当てた場合でも、ハミングし、フリーズしてから続行し、かなりの時間がかかります。小さなバッチでテストを実行すると、物事はかなり速くなり、フリーズはほとんど起こりません.

テストの実行中にメモリ使用量を確認しましたが、指定された最大ヒープまたはパーマのいずれかの最大値に近くないため、問題になることはありません...

これを回避する方法についてのヒントはありますか。

4

3 に答える 3

3

これはすでに試したことかもしれませんが、単体テストを「JUnit プラグイン テスト」として実行している場合は、eclispe.ini の Xmx と MaxPermSize の設定は役に立ちません。

eclipse.ini 設定を使用すると、現在の Eclipse の設定を変更できます。この Eclipse から生成された Eclipse インスタンスは、デフォルト設定 (Xms40m や Xmx512m など) のままです。これらも変更する必要があります。

テストに使用する起動構成を開き ([実行] > [実行構成...] で、単体テストの起動に使用する構成を選択します)、[引数] タブに移動します。そこで、「VM Arguments」テキスト領域に、eclipse.ini ファイルで行ったように新しいメモリ設定を入力します (私-Xms256m -Xmx1536m -XX:MaxPermSize=256mは最も高価なテスト スイートに使用しますが、もっと必要になるかもしれません)。

ただし、主な問題は、単体テストの潜在的なメモリ リークを修正することです。にこれ以上アンロード/メモリ解放/...がありtearDown()ませんか? プロファイリングの下で​​テストを実行すると役立つ場合があります (私が働いている場所では、この目的のために Yourkit Java プロファイラーを使用しています... しかし、無料ではありません。JConsole が役立つ場合があります。http ://java.sun.com/developer/technicalArticlesも参照してください/J2SE/jconsole.html )。

于 2011-02-17T10:51:20.457 に答える
0

すべてのテストを実行した場合にのみ発生する、プログラム内の何らかのメモリ リークが発生している可能性があります。テストを外部で実行した場合に同じ問題が発生するかどうかについては言及していません。

フリーズアップの頃に何らかのメモリ アナライザーを実行することをお勧めします。MAT http://www.eclipse.org/mat/のようなものが過去に私を助けてくれました。jstack の複数のセッションを実行して、時間の経過とともに何が起こっているかを把握することもできます。

于 2011-02-21T05:59:40.327 に答える
0

コメントすることは許可されていないため、ここに追加します..メモリをチェックしたため、そのオプションは閉じられています

試してみるべき他のいくつかのこと:

junitでフォークオプションを試してみたかどうかはわかりません。

ターゲットクラスを何度も再構築していますか? 対象のフォルダを監視できますか?

ワークスペースを再作成しようとしましたか? 主な問題(メモリ、ロギングなど)をカバーしているように見えるため、これを提案するだけです..

于 2011-02-16T15:29:33.440 に答える