使用有限 RAM 執行 Bazel

回報問題 查看原始碼 夜間 7.2 7.1 7.0 6.5 6.4

本頁面說明如何使用標記執行 RAM 有限的 Bazel。

在某些情況下,您可能會想讓 Bazel 使用最小的記憶體。您可以設定 透過啟動旗標設定堆積上限 --host_jvm_args、 例如 --host_jvm_args=-Xmx2g

然而,如果您的建構大小夠大,Bazel 可能會擲回 OutOfMemoryError (OOM) 快訊通知。您可以讓 Bazel 使用較少的記憶體 傳送下列指令標記,減少漸進式建構作業的成本: --discard_analysis_cache--nokeep_state_after_build--notrack_incremental_state

這些標記可盡量減少 Bazel 在建構中使用的記憶體,而且不會耗用大量資源 導致日後建構作業的速度比標準漸進式建構作業慢

您也可以個別傳遞以下其中一個標記:

  • --discard_analysis_cache 會減少執行期間使用的記憶體 (而非 分析)。漸進式建構作業不必重新載入套件,但會 必須重新執行分析和執行作業 (不過磁碟上的動作快取 以防止極度重新執行)。
  • --notrack_incremental_state 不會在 Bazel 的內部儲存空間中儲存任何邊緣 依附元件圖表,因此無法用於漸進式建構。下一個版本 就會捨棄資料,但為了內部偵錯 除非指定 --nokeep_state_after_build
  • --nokeep_state_after_build 會在建構完成後捨棄所有資料, 漸進式建構作業必須從頭開始建立 (磁碟上動作除外) 快取)。這不會影響目前版本的高水標記。