En esta página, se describe cómo limitar y reducir la memoria que usa Bazel.
Ejecuta Bazel con RAM limitada
En ciertas situaciones, es posible que desees que Bazel use la menor cantidad de memoria posible. Puedes establecer el heap máximo a través de la marca de inicio --host_jvm_args
, como --host_jvm_args=-Xmx2g
.
Sin embargo, si tus compilaciones son lo suficientemente grandes, Bazel puede arrojar un error OutOfMemoryError
(OOM) cuando no tiene suficiente memoria. Puedes hacer que Bazel use menos memoria, a costa de compilaciones incrementales más lentas, si pasas las siguientes marcas de comando: --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 de lo que sería una compilación incremental estándar.
También puedes pasar cualquiera de estos parámetros de forma individual:
--discard_analysis_cache
reducirá la memoria que se usa durante la ejecución (no el análisis). Las compilaciones incrementales no tendrán que volver a cargar paquetes, pero sí tendrán que volver a realizar el análisis y la ejecución (aunque la caché de acciones en el disco puede evitar la mayoría de las reejecuciones).--notrack_incremental_state
no almacenará ninguna arista en el gráfico de dependencia interno de Bazel, por lo que no se podrá usar para compilaciones incrementales. La próxima compilación descartará esos datos, pero se conservarán hasta entonces para la depuración interna, a menos que se especifique--nokeep_state_after_build
.--nokeep_state_after_build
descartará todos los datos después de la compilación, de modo que las compilaciones incrementales deberán compilarse desde cero (excepto la caché de acciones en el disco). Por sí solo, no afecta la marca de agua alta de la compilación actual.
Generación de perfiles de memoria
Bazel incluye un generador de perfiles de memoria integrado que puede ayudarte a verificar el uso de memoria de tu regla. Obtén más información sobre este proceso en la sección de Memory Profiling de nuestra documentación sobre cómo mejorar el rendimiento de las reglas personalizadas.