Otimizar memória

Informar um problema Mostrar fonte Por noite · 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 algumas situações, o Bazel pode usar o mínimo de memória. É possível definir heap máximo por meio da sinalização 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, na sigla em inglês) quando não há memória suficiente. É possível fazer o Bazel usar menos memória com o custo de builds incrementais mais lentos passando as seguintes flags de comando: --discard_analysis_cache, --nokeep_state_after_build, e --notrack_incremental_state.

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

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

  • --discard_analysis_cache reduz a memória usada durante a execução análise). Builds incrementais não vão precisar refazer o carregamento de pacotes, mas refazer a análise e a execução (embora o cache de ação no disco possa impedir a maior parte da reexecução).
  • --notrack_incremental_state não vai armazenar nenhuma borda na memória interna gráfico de dependências, 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é lá 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 builds incrementais precisam ser criados do zero (exceto para a ação em disco) cache). 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 Memory Profiler integrado que ajuda a verificar as regras e uso de memória. Leia mais sobre esse processo na Seção de criação de perfil de memória do nosso documentação sobre como melhorar o desempenho de regras personalizadas.