Tối ưu hoá bộ nhớ

Báo cáo sự cố Xem nguồn

Trang này mô tả cách giới hạn và giảm mức sử dụng bộ nhớ của Bazel.

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

Trong một số trường hợp nhất định, 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, 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í xây dựng tăng dầ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 chi phí tạo 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ể chuyển riêng từng cờ sau đâ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 phân tích và thực thi (mặc dù bộ nhớ đệm hành động trên ổ đĩa có thể ngăn việc thực thi lại hầu hết).
  • --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 để không thể sử dụng cho các bản dựng tăng dần. Bản dựng tiếp theo sẽ loại bỏ dữ liệu đó, nhưng dữ liệu này 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 tạo bản 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). Chỉ riêng cấu hình 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 được tích hợp sẵn trình phân tích bộ nhớ có thể giúp bạn kiểm tra mức sử dụng bộ nhớ của quy tắc. Hãy đọc thêm về quy trình này trong phần Phân tích bộ nhớ của 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.