Chạy Bazel với RAM hạn chế

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Báo cáo sự cố Xem nguồn

Trang này mô tả cách sử dụng cờ để chạy Bazel với RAM hạn chế.

Trong một số trường hợp, bạn có thể muốn Bazel sử dụng bộ nhớ ở mức tối thiểu. Bạn có thể đặt vùng nhớ khối xếp tối đa thông qua cờ khởi động --host_jvm_args, chẳng hạn như --host_jvm_args=-Xmx2g.

Tuy nhiên, nếu các bản dựng của bạn đủ lớn, Bazel có thể gửi một OutOfMemoryError (OOM) khi không có đủ bộ nhớ. Bạn có thể làm cho Bazel sử dụng ít bộ nhớ hơn, với chi phí bản dựng tăng dần chậm hơn bằng cách truyền các cờ lệnh sau: --discard_analysis_cache, --nokeep_state_after_build--notrack_incremental_state.

Các cờ này sẽ giảm thiểu bộ nhớ mà Bazel sử dụng trong bản dựng, và đổi lại sẽ tạo ra các bản dựng trong tương lai chậm hơn bản dựng tăng dần chuẩn.

Bạn cũng có thể chuyển bất kỳ cờ nào trong số các cờ này:

  • --discard_analysis_cache sẽ giảm bộ nhớ được sử dụng trong quá trình thực thi (không phải phân tích). Các bản dựng gia tăng sẽ không phải thực hiện lại quá trình tải gói, nhưng sẽ phải thực hiện lại việc phân tích và thực thi (mặc dù bộ nhớ đệm của thao tác trên đĩa có thể ngăn hầu hết quá trình thực thi lại).
  • --notrack_incremental_state sẽ không lưu trữ bất kỳ cạnh nào trong biểu đồ phần phụ thuộc bên trong của Bazel để không thể sử dụng cho các bản dựng gia tăng. Bản dựng tiếp theo sẽ loại bỏ dữ liệu đó, nhưng dữ liệu đó sẽ được giữ nguyên cho đến thời điểm đó, để gỡ lỗi nội bộ, trừ khi --nokeep_state_after_build được chỉ định.
  • --nokeep_state_after_build sẽ loại bỏ tất cả dữ liệu sau khi xây dựng, để các bản dựng gia tăng phải xây dựng từ đầu (ngoại trừ bộ nhớ đệm hành động trên đĩa). Một mình trường này không ảnh hưởng đến dấu nước cao trong công trình hiện tại.