Executar o Bazel com RAM limitada

Nesta página, descrevemos como usar sinalizações para executar o Bazel com RAM limitada.

Em determinadas situações, talvez você queira que o Bazel use pouca memória. É possível definir o stack máximo com a sinalização de inicialização --host_jvm_args, como --host_jvm_args=-Xmx2g.

No entanto, se seus builds forem grandes o suficiente, o Bazel poderá gerar uma OutOfMemoryError (OOM) quando não tiver memória suficiente. É possível fazer o Bazel usar menos memória, ao custo de builds incrementais mais lentos, transmitindo as seguintes sinalizações de comando: --discard_analysis_cache, --nokeep_state_after_build e --notrack_incremental_state.

Essas sinalizações minimizarão a memória que o Bazel usa em um build, ao custo de tornar os builds futuros mais lentos do que um build incremental padrão.

Também é possível transmitir qualquer uma destas sinalizações individualmente:

  • --discard_analysis_cache reduzirá a memória usada durante a execução (não a análise). Os builds incrementais não precisarão refazer o carregamento do pacote, mas refazer a análise e a execução, embora o cache de ações no disco possa impedir a maior parte da nova execução.
  • --notrack_incremental_state não armazenará nenhuma borda no gráfico de dependência interna do Bazel para que não possa ser usada em builds incrementais. O próximo build descartará esses dados, mas será preservado até essa data, para depuração interna, a menos que --nokeep_state_after_build seja especificado.
  • --nokeep_state_after_build descartará todos os dados após o build, para que os builds incrementais sejam criados do zero (exceto o cache de ação no disco). Sozinha, ele não afeta a marca alta da versão atual.