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

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