Optimiza la memoria

Informar un problema . Ver fuente . Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

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.