Ejecuta Bazel con RAM limitada

Informar un problema Ver fuente Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

En ciertas situaciones, es posible que desees que Bazel use una cantidad mínima de memoria. Puedes configurar el montón 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 OutOfMemoryError (OOM) cuando no tiene suficiente memoria. Puedes hacer que Bazel use menos memoria, con el costo 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 que una compilación incremental estándar.

También puedes pasar cualquiera de estas marcas 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 el paquete, pero sí deberán 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á ningún borde en el gráfico de dependencias interno de Bazel, por lo que no se podrá usar para compilaciones incrementales. La siguiente 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 se tengan que compilar desde cero (excepto la caché de acciones en el disco). Por sí solo, no afecta el límite máximo de la compilación actual.