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

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

特定の状況では、Bazel で最小限のメモリを使用したい場合があります。最大ヒープは、起動フラグ --host_jvm_args--host_jvm_args=-Xmx2g など)を使用して設定できます。

ただし、ビルドに十分な大きさがある場合、Bazel はメモリが不足しているときに OutOfMemoryError(OOM)をスローすることがあります。以下のビルドフラグを渡すと、増分ビルドに時間がかかりますが、Bazel が使用するメモリは少なくなります。--discard_analysis_cache--nokeep_state_after_build--notrack_incremental_state

これらのフラグを指定すると、Bazel がビルドで使用するメモリが最小限に抑えられます。ただし、今後の増分ビルドよりも、今後のビルドに時間がかかります。

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

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