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, có thể bạn muốn Bazel sử dụng ít bộ nhớ nhất. 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 công trình của bạn đủ lớn, Bazel có thể tạo một OutOfMemoryError (OOM) khi không có đủ bộ nhớ. Bạn có thể giúp Bazel sử dụng ít bộ nhớ hơn, với chi phí tăng dần cho các bản dựng, bằng cách chuyển các cờ lệnh sau: --discard_analysis_cache, --nokeep_state_after_build, và --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 chi phí tạo ra các bản dựng trong tương lai chậm hơn bản dựng gia tăng tiêu chuẩn.

Bạn cũng có thể chuyển bất kỳ cờ nào trong số những cờ này sau đây:

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