En esta página, se describe cómo limitar y reducir la memoria que usa Bazel.
Cómo ejecutar Bazel con RAM limitada
En algunas situaciones, es posible que quieras que Bazel use la memoria mínima. Puedes configurar
montón máximo mediante la función experimental de inicio
--host_jvm_args
,
como --host_jvm_args=-Xmx2g
.
Sin embargo, si tus compilaciones son lo suficientemente grandes, es posible que Bazel arroje una OutOfMemoryError
.
(OOM) cuando no tiene suficiente memoria. Puedes hacer que Bazel use menos memoria, en
el costo de las 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 usa Bazel en una compilación, a costa de lo que hace que las compilaciones futuras sean más lentas que 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 análisis). Las compilaciones incrementales no tendrán que rehacer la carga del paquete, deberá rehacer el análisis y la ejecución (aunque la caché de acciones en disco puede evitar la mayor cantidad de nuevas ejecuciones).--notrack_incremental_state
no almacenará ningún borde en la memoria interna de Bazel. gráfico de dependencias, de modo que no se pueda usar para compilaciones incrementales. La próxima compilación esos datos se descartarán, pero se conservarán hasta entonces. Para una 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 deben compilarse desde cero (excepto por la acción en disco) caché). Por sí solo, no afecta la marca de agua de la construcción actual.
Generación de perfiles de memoria
Bazel incluye un generador de perfiles de memoria integrado que puede ayudarte a comprobar el estado el uso de la memoria. Obtén más información sobre este proceso en la sección de creación de perfiles de memoria de nuestra documentación sobre cómo mejorar el rendimiento de las reglas personalizadas.