Ejecuta Bazel con RAM limitada

En esta página, se describe cómo usar marcas para ejecutar Bazel con RAM limitada.

En ciertas situaciones, es posible que quieras usar la memoria mínima de Bazel. Puedes configurar el montón máximo con la marca 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 tenga 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 que las compilaciones futuras sean más lentas que una compilación estándar estándar.

También puedes pasar cualquiera de estas marcas individualmente:

  • --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, pero tendrán que rehacer el análisis y la ejecución (aunque la caché de acciones en el disco puede evitar la mayor parte de la nueva ejecución).
  • --notrack_incremental_state no almacenará ningún borde en el gráfico de dependencia interna de Bazel, por lo que no se podrá usar en compilaciones incrementales. En la siguiente compilación, se descartarán los datos, pero se conservarán hasta ese momento 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 tienen que compilarse desde cero (excepto la caché de acciones en disco). Por sí sola, no afecta la marca de agua alta de la compilación actual.