Nesta página, descrevemos como limitar e reduzir a memória que o Bazel usa.
Como executar o Bazel com RAM limitada
Em determinadas situações, talvez você queira que o Bazel use memória mínima. É possível definir o
heap máximo 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. Para fazer com que o Bazel use menos memória, mas com
builds incrementais mais lentos, transmita 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 uma compilação, ao custo de tornar as versões futuras mais lentas do que um build incremental padrão seria.
Também é possível transmitir qualquer uma dessas sinalizações individualmente:
--discard_analysis_cache
reduzirá a memória usada durante a execução (não a análise). Builds incrementais não precisam refazer o carregamento de pacotes, mas sim refazer a análise e a execução, embora o cache de ação no disco possa impedir a maioria das novas execuções.- O
--notrack_incremental_state
não armazena arestas no gráfico de dependência interna do Bazel. Portanto, ele não pode ser usado em builds incrementais. O próximo build vai descartar esses dados, mas eles vão ser 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 a criação, para que as versões incrementais tenham que ser criadas do zero (exceto o cache de ação no disco). Sozinha, ela não afeta a marca-d'água da construção atual.
Criação de perfil de memória
O Bazel vem com um Memory Profiler integrado que pode ajudar você a verificar o uso da memória da sua regra. Leia mais sobre esse processo na seção Criação de perfil de memória da nossa documentação sobre como melhorar o desempenho de regras personalizadas.