Otimizar memória

Informar um problema Ver código-fonte Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Nesta página, descrevemos como limitar e reduzir o uso de memória pelo Bazel.

Como executar o Bazel com RAM limitada

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

No entanto, se os builds forem grandes o suficiente, o Bazel poderá gerar uma OutOfMemoryError (OOM) quando não tiver memória suficiente. É possível fazer com que o Bazel use menos memória, em detrimento de builds incrementais mais lentos, transmitindo as seguintes flags de comando: --discard_analysis_cache, --nokeep_state_after_build e --notrack_incremental_state.

Essas flags minimizam a memória que o Bazel usa em um build, tornando os builds futuros mais lentos do que um build incremental padrão.

Também é possível transmitir qualquer uma dessas flags individualmente:

  • --discard_analysis_cache vai reduzir a memória usada durante a execução (não a análise). Versões incrementais não precisarão refazer o carregamento do pacote, mas terão que refazer a análise e a execução, embora o cache de ações no disco possa impedir a maioria das novas execuções.
  • O --notrack_incremental_state não vai armazenar nenhuma borda no gráfico de dependência interna do Bazel, de modo que ele não possa ser usado em builds incrementais. O próximo build vai descartar esses dados, mas eles serão preservados até então, para depuração interna, a menos que --nokeep_state_after_build seja especificado.
  • --nokeep_state_after_build vai descartar todos os dados após a criação, de modo que os builds incrementais tenham que ser criados do zero (exceto para o cache de ações no disco). Por si só, isso não afeta a marca marcante do build atual.

Criação de perfil de memória

O Bazel vem com um perfilador de memória integrado que pode ajudar a verificar o uso de memória da sua regra. Leia mais sobre esse processo na seção Criação de perfil de memória da nossa documentação sobre como melhorar o desempenho de regras personalizadas.