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