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

รายงานปัญหา ดูแหล่งที่มา /3} /4} {3/4} {3/4} {3/4} {3/4} /4.

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