Запуск Bazel с ограниченной оперативной памятью

На этой странице описывается, как использовать флаги для запуска 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 отбрасывает все данные после сборки, так что инкрементные сборки должны создаваться с нуля (за исключением кеша действий на диске). Само по себе это не влияет на максимальную отметку текущей сборки.