30

JUnitテストを実行すると、常に次のエラーが発生するようです。

eclipse outOfMemoryError:ヒープスペース

JConsoleでEclipseを監視し、ヒープメモリのピークは約150MBです。ヒープメモリを1GBに設定しました。

Eclipseを起動するときに、次の引数を使用しています。

-vm "C:\ Program Files \ Java \ jre1.5.0_08 \ bin \ javaw.exe" -vmargs -Xmx1024M
-XX:MaxPermSize = 128M -Dcom.sun.management.jmxremote.port = 8999
-Dcom.sun.management.jmxremote.ssl = false
-Dcom.sun.management.jmxremote.authenticate = false

誰かがこの問題を引き起こしている可能性があることを知っていますか?これは、JUnitテストを実行している場合にのみ発生します。

4

5 に答える 5

42

Junit テストは、Eclipse IDE とは異なる vm で実行されます。したがって、Eclipse ではなく、メモリ不足の vm です。
テストの実行構成でテスト vm の設定を変更できます。
実行構成に移動し、引数の下で、vm 引数を設定できます。

于 2009-03-25T11:23:24.957 に答える
20

@Thijs Wouters の応答に加えて、Eclipse でこの問題を修正するために、次のことを行いました。

  • JUnit の下に新しい実行構成を追加しました ([実行] > [実行構成] > [JUnit] > [新規])。
  • 引数タブ内で、必要に応じて VM 引数を「-Xms64m -Xm256m」以上に設定します。
于 2010-09-17T10:29:01.653 に答える
15

JUnitテストでメモリリークが発生している可能性があります。一般的な落とし穴は次のとおりです。Junitは、その中のすべてのテストメソッドに対してTestCaseクラスの新しいインスタンスを作成します。また、すべてのインスタンス変数は、JUnitが終了するまで保持されます。つまり、50個のテストメソッドを持つTestCaseクラスと、setUp()メソッドの1MBオブジェクトグラフで初期化されるインスタンス変数がある場合、そのTestCaseクラスには50MBのヒープスペースが必要になります。

編集:上記の問題は古いバージョンのJUnitにのみ存在し、JUnit4で修正されたと思います。

于 2009-03-25T13:05:28.987 に答える
2

JUnit ランチャーのヒープ サイズを自動的に設定する Eclipse 用のプラグインをリリースしました。http://code.google.com/p/junitlaunchfixer/から入手できます。Eclipse Europa、Ganymede、および Galileo で動作します。

于 2009-09-22T22:11:16.307 に答える
1

私は自分の問題の解決策を見つけました-それは他の人を助けるかもしれません;)ヒープサイズを増やしていたとき、プログラム(Eclipseを介して実行したもの)ではなく、Eclipseアプリケーションのヒープサイズを増やしていました。プログラムを実行する前にコマンドを実行します。

于 2010-05-27T07:10:49.777 に答える