Optimiza la memoria

Informa un problema Ver código fuente

En esta página, se describe cómo limitar y reducir la memoria que Bazel usa.

Ejecuta Bazel con RAM limitada

En ciertas situaciones, es posible que desees que Bazel use una memoria mínima. Puedes establecer el montón máximo mediante la marca de inicio --host_jvm_args, como --host_jvm_args=-Xmx2g.

Sin embargo, si tus compilaciones son lo suficientemente grandes, Bazel puede mostrar una OutOfMemoryError (OOM) cuando no tenga suficiente memoria. Puedes hacer que Bazel use menos memoria, a costa de compilaciones incrementales más lentas, si pasas las siguientes marcas de comandos: --discard_analysis_cache, --nokeep_state_after_build y --notrack_incremental_state.

Estas marcas minimizarán la memoria que Bazel usa en una compilación, a costa de hacer que las compilaciones futuras sean más lentas que en una compilación incremental estándar.

También puedes pasar cualquiera de estas marcas de forma individual:

  • --discard_analysis_cache reducirá la memoria usada durante la ejecución (no el análisis). Las compilaciones incrementales no tendrán que rehacer la carga del paquete, sino que deberán rehacer el análisis y la ejecución (aunque la caché de acciones en el disco puede evitar la mayoría de las ejecuciones nuevas).
  • --notrack_incremental_state no almacenará ningún borde en el gráfico de dependencia interna de Bazel, por lo que no se podrá usar para compilaciones incrementales. En la siguiente compilación, se descartarán esos datos, pero se conservarán hasta que se realice la depuración interna, a menos que se especifique un --nokeep_state_after_build.
  • --nokeep_state_after_build descartará todos los datos después de la compilación, de modo que las compilaciones incrementales tengan que compilarse desde cero (excepto la caché de acciones en el disco). Por sí sola, no afecta la marca de agua alta de la construcción actual.

Creación de perfiles de memoria

Bazel viene con un generador de perfiles de memoria integrado que puede ayudarte a verificar el uso de memoria de tus reglas. Obtén más información sobre este proceso en la sección de generación de perfiles de memoria de nuestra documentación sobre cómo mejorar el rendimiento de las reglas personalizadas.