Esta página descreve como limitar e reduzir a memória usada 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 a
pilha máxima 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). Os builds incrementais não precisam repetir o carregamento do pacote, mas precisam repetir a análise e a execução, embora o cache de ação no disco possa impedir a maioria das execuções repetidas.- O
--notrack_incremental_state
não armazenará nenhuma aresta no gráfico de dependências interno do Bazel, para que ele não possa ser usado para 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. - O
--nokeep_state_after_build
descarta todos os dados após o build, de modo que os builds incrementais precisam ser criados do zero (exceto o cache de ação no disco). Por si só, ele não afeta o limite máximo 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 de criação de perfil de memória da nossa documentação sobre como melhorar o desempenho das regras personalizadas.