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