Codebuildでjava.lang.OutOfMemoryError


これと似たような話で、CodeBuildでもおきたため、その対処方法を記載。

前提

  • JenkinsがMaster、Buildの実態はCodeBuildで実施。
  • Gradleを利用。

問題

Jenkinsから呼び出されるCodeBuild pluginで以下のようなErrorが起き、CodeBuildがエラーになる。

[AWS CodeBuild Plugin] java.lang.OutOfMemoryError: Metaspace

対処

buildspec.ymlに以下のような対処を打つ。


version: 0.2

phases:
  install:
    runtime-versions:
      java: openjdk11
    commands:
      - chmod +x ./gradlew
      - touch gradle.properties
      - |
        cat <<EOL > gradle.properties
        org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m
        EOL

gradle.propertiesを作成し、それに記載するgradleのvm引数をorg.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512mのように追加すればよい。

補足

この対処を打つ場合、codebuildのコンピューティングタイプはbuild.general1.medium以上のほうがよい。

補足その2

UnitTestの場合であれば、どちらかというと↓
https://qiita.com/fake-deli-ca/items/b2cadce085595c57636d

本対応は、「Gradle自体はこちらによるとデフォルトでは1024MBヒープサイズを確保する」というのが足りなかった場合。(この辺Gradleはわかりにくい・・・。)