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.