Nesta página, descrevemos como limitar e reduzir a memória usada pelo Bazel.
Como executar o Bazel com RAM limitada
Em algumas situações, o Bazel pode usar pouca memória. É possível definir o
heap máximo com a sinalização de inicialização
--host_jvm_args
,
como --host_jvm_args=-Xmx2g
.
No entanto, se suas versões forem grandes o suficiente, o Bazel poderá gerar uma OutOfMemoryError
(OOM, na sigla em inglês) quando não tiver memória suficiente. É possível fazer o Bazel usar menos memória,
ao custo de builds incrementais mais lentos, transmitindo as seguintes sinalizações de comando:
--discard_analysis_cache
,
--nokeep_state_after_build
e
--notrack_incremental_state
.
Essas sinalizações minimizarão a memória que o Bazel usa em um build, ao custo de tornar os builds futuros mais lentos do que um build incremental padrão.
Também é possível transmitir uma destas sinalizações individualmente:
--discard_analysis_cache
vai reduzir a memória usada durante a execução (não a análise). Os builds incrementais não precisarão refazer o carregamento do pacote, mas precisarão refazer a análise e a execução (embora o cache de ações no disco possa evitar a maioria das execuções).--notrack_incremental_state
não armazenará nenhuma borda no gráfico de dependências internas do Bazel para que não possa ser usada para builds incrementais. O próximo build descartará esses dados, mas será preservado até essa data para depuração interna, a menos que--nokeep_state_after_build
seja especificado.--nokeep_state_after_build
descartará todos os dados após a criação, de modo que os builds incrementais precisam ser criados do zero (exceto para o cache de ações no disco). Por si só, isso não afeta a marca de água elevada da versão atual.
Criação de perfil de memória
O Bazel inclui um criador de perfil de memória integrado que pode ajudar você 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 para saber como melhorar o desempenho das regras personalizadas.