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