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