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

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ớ tối thiểu. Bạn có thể đặt mức tối đa cho vùng nhớ heap 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ể giảm mức sử dụng bộ nhớ của Bazel (đánh đổi bằng việc tăng thời gian cho các bản dựng gia tăng) 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 quá trình tạo bản dựng, nhưng đổi lại, các bản dựng trong tương lai sẽ chậm hơn so với bản dựng gia tăng tiêu chuẩn.

Bạn cũng có thể truyền riêng từng cờ trong số này:

  • --discard_analysis_cache sẽ giảm bộ nhớ được 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 làm lại quá trình tải gói, nhưng sẽ phải làm lại quá trình phân tích và thực thi (mặc dù bộ nhớ đệm hành động trên đĩa có thể ngăn hầu hết các lần 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 nội bộ của Bazel, do đó, bạn không thể sử dụng biểu đồ này 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ữ lại cho đến lúc đó để gỡ lỗi nội bộ, trừ phi bạn chỉ định --nokeep_state_after_build.
  • --nokeep_state_after_build sẽ loại bỏ tất cả dữ liệu sau bản dựng, do đó, các bản dựng gia tăng phải được tạo từ đầu (ngoại trừ bộ nhớ đệm thao tác trên đĩa). Một mình nó không ảnh hưởng đến dấu mốc cao nhất của bản dựng hiện tại.