การเรียกใช้ Bazel และ RAM ที่จํากัด

หน้านี้จะอธิบายวิธีใช้แฟล็กเพื่อเรียกใช้ Bazel ที่มี RAM จํากัด

ในบางสถานการณ์ คุณอาจต้องการให้ Bazel ใช้หน่วยความจําน้อยที่สุด คุณสามารถตั้งค่าฮีปสูงสุดผ่านแฟล็กสําหรับเริ่มต้นใช้งาน --host_jvm_args เช่น --host_jvm_args=-Xmx2g

อย่างไรก็ตาม หากบิลด์มีขนาดใหญ่พอ Bazel อาจส่ง OutOfMemoryError(OOM) เมื่อมีหน่วยความจําไม่เพียงพอ คุณทําให้ Bazel ใช้หน่วยความจําน้อยลงได้ในราคาของบิลด์ที่เพิ่มขึ้นช้า โดยแฟล็กคําสั่งต่อไปนี้ --discard_analysis_cache, --nokeep_state_after_build และ --notrack_incremental_state

แฟล็กเหล่านี้จะลดหน่วยความจําที่ Bazel ใช้ในบิลด์ ซึ่งจะทําให้ค่าใช้จ่ายสําหรับบิลด์ในอนาคตช้ากว่าบิลด์ที่เพิ่มขึ้นแบบมาตรฐาน

คุณยังสามารถส่งผ่านแฟล็กแต่ละรายการต่อไปนี้ได้อีกด้วย

  • --discard_analysis_cache จะลดหน่วยความจําที่ใช้ระหว่างการดําเนินการ (ไม่ใช่การวิเคราะห์) บิลด์ที่เพิ่มขึ้นจะไม่ต้องทําซ้ําการโหลดแพ็กเกจ แต่จะต้องวิเคราะห์และดําเนินการใหม่ (แม้ว่าแคชการดําเนินการในดิสก์จะช่วยป้องกันการเรียกใช้ซ้ําส่วนใหญ่ได้)
  • --notrack_incremental_state จะไม่เก็บขอบใดๆ ในกราฟการอ้างอิงภายในของ Bazel จึงไม่อาจใช้กับบิลด์ที่เพิ่มขึ้นได้ บิลด์ถัดไปจะทิ้งข้อมูล แต่จะยังคงเก็บรักษาข้อมูลดังกล่าวไว้จนกว่าจะถึงช่วงแก้ไขข้อบกพร่องภายใน เว้นแต่ว่าจะระบุ --nokeep_state_after_build ไว้
  • --nokeep_state_after_build จะทิ้งข้อมูลทั้งหมดหลังบิลด์ เพื่อให้บิลด์ที่เพิ่มขึ้นมาตั้งแต่ต้น (ยกเว้นแคชการดําเนินการในดิสก์) คนเดียวไม่กระทบต่อเครื่องหมายสูงของบิลด์ปัจจุบัน