Esta página descreve como limitar e reduzir a memória usada pelo Bazel.
Como executar o Bazel com RAM limitada
Em algumas situações, talvez você queira que o Bazel use o mínimo de memória. É possível definir o
heap máximo usando a flag de inicialização
--host_jvm_args,
como --host_jvm_args=-Xmx2g.
No entanto, se as builds forem grandes o suficiente, o Bazel poderá gerar um OutOfMemoryError (OOM) quando não tiver memória suficiente. Você pode fazer com que o Bazel use menos memória, ao
custo de builds incrementais mais lentas, transmitindo as seguintes flags de comando:
--discard_analysis_cache,
--nokeep_state_after_build,
e
--notrack_incremental_state.
Essas flags vão minimizar a memória que o Bazel usa em uma build, ao custo de tornar as builds futuras mais lentas do que uma build incremental padrão.
Também é possível transmitir qualquer uma dessas flags individualmente:
--discard_analysis_cachereduz a memória usada durante a execução (não a análise). As builds incrementais não precisam refazer o carregamento de pacotes, mas precisam refazer a análise e a execução (embora o cache de ações no disco possa impedir a maioria das reexecuções).--notrack_incremental_statenão armazena nenhuma borda no gráfico de dependência interno do Bazel, de modo que ele não possa ser usado para builds incrementais. A próxima build vai descartar esses dados, mas eles serão preservados até então para depuração interna, a menos que--nokeep_state_after_buildseja especificado.--nokeep_state_after_builddescarta todos os dados após a build, para que as builds incrementais precisem ser criadas do zero (exceto para o cache de ações no disco). Sozinho, ele não afeta a marca d'água da build atual.
Criação de perfil de memória
O Bazel vem com um criador de perfil de memória integrado que pode ajudar você a verificar o uso de memória da regra. Saiba mais sobre esse processo na seção Criação de perfil de memória da nossa documentação sobre como melhorar a performance de regras personalizadas.