本頁面說明如何限制及減少 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
會在建構後捨棄所有資料,因此漸進式建構作業必須從頭開始建構 (磁碟上動作快取除外)。這項設定本身不會影響目前版本的最高水準。
記憶體分析
Bazel 內建記憶體分析器,可協助您檢查規則的記憶體用量。如要進一步瞭解這項程序,請參閱說明文件的記憶體剖析一節,以瞭解如何提升自訂規則的效能。