2

コマンドラインで問題なくビルドできる Travis (dockerized) で実行されている maven ビルドがあります。java.lang.OutOfMemoryError: GC overhead limit exceeded数日以来、私はテストケース中に取得します。これは、AspectJ テスト ケース中に常に発生します。

最後のビルドの出力はhttps://travis-ci.org/dresden-ocl/dresdenocl/builds/53030457です。

大幅な変更は行っていません。また、アプリケーションの AspectJ 部分には触れませんでした。JAVA_OPTS、MAVEN_OPTS、さらには tycho-surefire-plugin の pom.xml でより多くの RAM を渡して、さまざまなことをテストしました。何も助けませんでした。

エラーを取り除き、すべてのテストを再度実行するにはどうすればよいですか? 彼らはエラーの原因となっている Travis 側の何かを変更したと思います。

4

3 に答える 3

1

スタックサイズを増やしてみてください。たとえばulimit -s 82768、再試行してください。制限を確認するには、ulimit -aまたはfree -mメモリを解放するために実行します。

于 2015-11-30T19:31:51.650 に答える
1

GC overhead limit exceededは、JVM がほとんどの時間をガベージ コレクションに費やしていることを意味し、深刻な問題があることを示しています。これはプログラミング (コード) の問題であるため、修正できませんでしJAVA_OPTSた。MAVEN_OPTS追加してみることができます

-XX:-UseGCOverheadLimit

しかし、それはお勧めできません。詳細については、これあれを参照してください。

于 2015-03-04T12:42:32.100 に答える
1

解決策はここに記載されており、 Travis CI が MAVEN_OPTS を提供する方法に関する問題を参照しています。したがって、提供された MAVEN_OPTS 値に問題がなければ、コンテナー化された環境でビルドすることはできません。利用可能な sudo がないからです。

before_install: 
  - sudo rm /etc/mavenrc
  - export M2_HOME=/usr/local/maven
  - export MAVEN_OPTS="-Dmaven.repo.local=$HOME/.m2/repository -Xms1024m -Xmx3072m -XX:PermSize=512m"

このプル リクエストにより、MAVEN_OPTS への変更が機能します。したがって、上記の回避策を使用せずに MAVEN_OPTS を変更できるため、Maven でコンテナー化されたビルドを使用できます。

于 2015-05-17T10:08:11.077 に答える