制限付き RAM で Bazel を実行する

問題を報告 ソースを表示

このページでは、フラグを使用して限られた RAM で Bazel を実行する方法について説明します。

状況によっては、Bazel によるメモリの使用を最小限にしたいことがあります。最大ヒープを設定するには、起動フラグ --host_jvm_args--host_jvm_args=-Xmx2g など)を使用します。

ただし、ビルドのサイズが十分大きい場合は、メモリが不足していると Bazel が OutOfMemoryError(OOM)をスローすることがあります。--discard_analysis_cache--nokeep_state_after_build--notrack_incremental_state のコマンドフラグを渡すことで、Bazel によるメモリの使用量を減らせますが、増分ビルドは遅くなります。

これらのフラグを使用すると、Bazel がビルドで使用するメモリが最小限に抑えられますが、将来のビルドが標準の増分ビルドよりも遅くなります。

これらのフラグのいずれかを個別に渡すこともできます。

  • --discard_analysis_cache は(分析ではなく)実行時に使用されるメモリを削減します。増分ビルドでは、パッケージの読み込みをやり直す必要はありませんが、分析と実行をやり直す必要があります(ディスク上のアクション キャッシュにより、ほとんどの再実行を防ぐことができます)。
  • --notrack_incremental_state は Bazel の内部依存関係グラフにエッジを保存しないため、増分ビルドには使用できません。そのデータは次のビルドで破棄されますが、--nokeep_state_after_build を指定しない限り、内部デバッグのために保持されます。
  • --nokeep_state_after_build はビルド後にすべてのデータを破棄するため、増分ビルドはゼロからビルドする必要があります(ディスク上のアクション キャッシュは除きます)。これだけでは、現在のビルドのハイ ウォーターマークには影響しません。