以有限的 RAM 執行 Bazel

本頁說明如何使用旗標,以有限的 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 會在建構後捨棄所有資料,因此增加建構作業的版本必須從頭開始建構 (磁碟內動作快取除外)。除此之外,這不會影響目前版本的高水位標記。