Otimizar memória

Informar um problema Ver código-fonte

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.