การเรียกใช้ 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 จะไม่จัดเก็บขอบในกราฟทรัพยากร Dependency ภายในของ Bazel เพื่อให้กราฟดังกล่าวใช้ไม่ได้กับบิลด์แบบเพิ่มทีละส่วน บิลด์ถัดไปจะทิ้งข้อมูลดังกล่าว แต่ระบบจะเก็บข้อมูลไว้จนกว่าจะถึงตอนนั้นเพื่อการแก้ไขข้อบกพร่องภายใน เว้นแต่จะระบุ --nokeep_state_after_build
  • --nokeep_state_after_build จะทิ้งข้อมูลทั้งหมดหลังจากบิลด์ เพื่อให้บิลด์แบบเพิ่มทีละส่วนต้องสร้างใหม่ตั้งแต่ต้น (ยกเว้นแคชการดำเนินการบนดิสก์) การใช้แฟล็กนี้เพียงอย่างเดียวจะไม่ส่งผลต่อขีดจำกัดสูงสุดของบิลด์ปัจจุบัน