使用有限 RAM 執行 Bazel

回報問題 查看原始碼 Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

本頁面說明如何使用標記,在有限的 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 會在建構後捨棄所有資料,因此增量版本必須從頭開始建構 (磁碟上動作快取除外)。這項設定本身不會影響目前版本的最高水準。