メモリを最適化する

<ph type="x-smartling-placeholder"></ph> 問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

このページでは、Bazel が使用するメモリを制限または削減する方法について説明します。

RAM を制限して Bazel を実行する

状況によっては、Bazel によるメモリの使用を最小限にしたいことがあります。1 対 1 の 起動フラグによる最大ヒープ --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 はビルド後にすべてのデータを破棄するため、 増分ビルドでは、ゼロからビルドする必要がある(ディスク上のアクションを除く) 。これだけでは、現在のビルドのハイ ウォーターマークには影響しません。

メモリ プロファイリング

Bazel には Memory Profiler が組み込まれており、ルールのチェックに役立つ メモリ使用率が高くなります。このプロセスの詳細については、 メモリ プロファイリングのセクション カスタムルールのパフォーマンスを改善する方法について説明します。