Trang này mô tả cách giới hạn và giảm mức bộ nhớ mà Bazel sử dụng.
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
vùng nhớ khối xếp tối đa thông qua cờ khởi động
--host_jvm_args!
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ể đặt để Bazel sử dụng ít bộ nhớ hơn, tại
chi phí của các 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,
và
--notrack_incremental_state.
Những cờ này sẽ giảm thiểu bộ nhớ mà Bazel sử dụng trong một bản dựng, nhưng đổi lại là
làm cho các bản dựng trong tương lai chậm hơn so với bản dựng tăng dần tiêu chuẩn.
Bạn cũng có thể truyền một trong những cờ này một cách riêng lẻ:
--discard_analysis_cache sẽ giảm mức sử dụng bộ nhớ trong quá trình thực thi (không phải
bản 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 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 chặn hầu hết việc thực thi lại).
--notrack_incremental_state sẽ không lưu trữ bất kỳ cạnh nào trong nội bộ của Bazel
biểu đồ phần phụ thuộc để không sử dụng được cho các bản dựng gia tăng. Bản dựng tiếp theo
sẽ loại bỏ dữ liệu đó mà vẫn được giữ nguyên cho đến thời điểm đó, để gỡ lỗi nội bộ
trừ khi bạn chỉ định --nokeep_state_after_build.
--nokeep_state_after_build sẽ loại bỏ mọi dữ liệu sau khi tạo bản dựng để
bản dựng tăng dần phải tạo từ đầu (ngoại trừ thao tác trên ổ đĩa
bộ nhớ đệm). Nếu chỉ dùng một mình, vấn đề này không ảnh hưởng đến mực nước cao của công trình hiện tại.
Phân tích bộ nhớ
Bazel đi kèm với một trình phân tích bộ nhớ tích hợp có thể giúp bạn kiểm tra
sử dụng bộ nhớ. Đọc thêm về quy trình này trên
Phần Phân tích bộ nhớ trong
tài liệu về cách cải thiện hiệu suất của các quy tắc tuỳ chỉnh.