Bazel mit begrenztem RAM ausführen

Auf dieser Seite wird beschrieben, wie Sie Flags zum Ausführen von Bazel mit begrenztem RAM verwenden.

In bestimmten Situationen kann es vorkommen, dass Bazel nur wenig Speicherplatz benötigt. Sie können den maximalen Heap über das Start-Flag --host_jvm_args festlegen, z. B. --host_jvm_args=-Xmx2g.

Wenn Ihre Builds jedoch groß genug sind, kann Bazel einen OutOfMemoryError (OOM) auslösen, wenn nicht genügend Speicher vorhanden ist. Wenn Sie die folgenden Befehls-Flags übergeben möchten, können Sie Bazel auf Kosten der langsameren inkrementellen Builds verwenden, um weniger Arbeitsspeicher zu verwenden: --discard_analysis_cache, --nokeep_state_after_build und --notrack_incremental_state

Diese Flags minimieren den Arbeitsspeicher, den Bazel in einem Build verwendet, allerdings auf Kosten der Erstellung zukünftiger Builds als ein standardmäßiger inkrementeller Build.

Sie können auch eines dieser Flags einzeln übergeben:

  • --discard_analysis_cache reduziert den während der Ausführung verwendeten Arbeitsspeicher (nicht die Analyse). Inkrementelle Builds müssen das Laden von Paketen nicht wiederholen, sondern die Analyse und Ausführung wiederholen, auch wenn der Aktionscache auf dem Laufwerk die meisten Neuausführungen verhindern kann.
  • --notrack_incremental_state speichert keine Kanten im internen Abhängigkeitsdiagramm von Bazel, sodass es für inkrementelle Builds nicht verwendet werden kann. Der nächste Build löscht diese Daten. Sie bleiben jedoch bis zu diesem Zeitpunkt für das interne Debugging gespeichert, sofern nicht --nokeep_state_after_build angegeben ist.
  • --nokeep_state_after_build verwirft alle Daten nach dem Build, sodass inkrementelle Builds von Grund auf neu erstellt werden müssen (mit Ausnahme des Aktionscaches auf dem Laufwerk). Allein dies hat keinen Einfluss auf das Wasserzeichen des aktuellen Builds.