แพลตฟอร์ม Android ทำงานโดยยึดหลักการที่ว่าหน่วยความจำว่างคือหน่วยความจำที่สูญเปล่า Android จะพยายามใช้หน่วยความจำทั้งหมดที่มีอยู่ตลอดเวลา เช่น ระบบจะเก็บแอปไว้ในหน่วยความจำหลังจากที่ปิดแอปแล้วเพื่อให้ผู้ใช้สลับกลับไปใช้แอปได้อย่างรวดเร็ว ด้วยเหตุนี้ อุปกรณ์ Android จึงมักทำงานโดยมีหน่วยความจำว่างเพียงเล็กน้อย (ดูการจัดสรรหน่วยความจำของ Android ที่นี่)
กระบวนการD daemon สำหรับ Low Memory Kill (LMK) ของ Android จะตรวจสอบสถานะหน่วยความจำของระบบ Android ที่ทำงานอยู่ และตอบสนองต่อแรงกดดันของหน่วยความจำสูงด้วยการหยุดกระบวนการที่ไม่จำเป็นที่สุดเพื่อรักษาให้ระบบทำงานในระดับที่ยอมรับได้
ในการตัดสินว่าจะฆ่ากระบวนการใด เดมอน LMK จะใช้คะแนนหน่วยความจำไม่เพียงพอที่เรียกว่า oom_adj_score เพื่อจัดลำดับความสำคัญของกระบวนการที่ทำงานอยู่ ระบบจะหยุดกระบวนการที่มีคะแนนสูงก่อน ระบบจะปิดแอปที่ทำงานอยู่เบื้องหลังก่อน แล้วจึงปิดกระบวนการของระบบเป็นลำดับสุดท้าย ตารางต่อไปนี้แสดงหมวดหมู่การให้คะแนน LMK จากสูงไปต่ำ ระบบจะลบรายการในหมวดหมู่ที่มีคะแนนสูงสุดในแถวแรกก่อน

เมตริก LMK ใน Android Vitals
Android Vitals ช่วยให้คุณตรวจสอบและปรับปรุงอัตรา LMK ของแอปได้ Android Dev Tools จะวัดอัตรา LMK เพียงอัตราเดียวเท่านั้น ซึ่งก็คืออัตรา LMK ที่ผู้ใช้รับรู้
เมตริกนี้แสดงเปอร์เซ็นต์ของผู้ใช้ที่ใช้งานอยู่รายวันซึ่งพบ LMK ที่ผู้ใช้รับรู้อย่างน้อย 1 รายการ LMK ที่ผู้ใช้รับรู้คือ LMK ที่ผู้ใช้มีแนวโน้มที่จะสังเกตเห็นได้ ตัวอย่างเช่น LMK ที่เกิดขึ้นระหว่างที่แอปแสดงกิจกรรมหรือทำหน้าที่เป็นบริการที่ทำงานอยู่เบื้องหน้า
คุณดูเมตริกได้ในส่วนความเสถียรใน Android Vitals

คุณสามารถกรองเมตริก เปรียบเทียบเมตริกกับแอปที่เทียบเท่า หรือตรวจสอบการเปลี่ยนแปลงของเมตริกเป็นระยะเวลานาน (สูงสุด 3 ปี) ได้เช่นเดียวกับเมตริก Vitals หลักอื่นๆ เช่น ANR และการขัดข้อง ข้อมูลจะพร้อมใช้งานสำหรับแอปที่มีอยู่ตั้งแต่ 28 ม.ค. 2025

เครื่องมือสร้างโปรไฟล์หน่วยความจำ
เครื่องมือต่อไปนี้จะช่วยคุณค้นหาและวินิจฉัยปัญหาเกี่ยวกับหน่วยความจำได้
- ดูวิธีที่แอปจัดสรรหน่วยความจำเมื่อเวลาผ่านไป คุณจะเห็นกราฟแบบเรียลไทม์เกี่ยวกับปริมาณหน่วยความจำที่แอปใช้ จำนวนออบเจ็กต์ Java ที่จัดสรร และเวลาที่ระบบจัดเก็บขยะ
- เริ่มเหตุการณ์การเก็บขยะและจับภาพฮีป Java ขณะที่แอปทำงาน
- บันทึกการจัดสรรหน่วยความจำของแอป ตรวจสอบออบเจ็กต์ที่จัดสรรทั้งหมด และดูสแต็กเทรซสําหรับการจัดสรรแต่ละรายการ
เครื่องมือสร้างโปรไฟล์หน่วยความจำของ Android Studio
Android Studio มี Memory Profiler เป็นคอมโพเนนต์ของ Android Profiler ซึ่งจะช่วยคุณระบุการรั่วไหลของหน่วยความจำและการเปลี่ยนแปลงหน่วยความจำที่อาจทําให้แอปกระตุก ค้าง และอาจทำให้แอปขัดข้อง เครื่องมือวิเคราะห์จะแสดงกราฟแบบเรียลไทม์ของการใช้หน่วยความจำของแอป และให้คุณบันทึกกองขยะ บังคับให้รวบรวมขยะ และติดตามการจัดสรรหน่วยความจำได้

เครื่องมือการสร้างโปรไฟล์หน่วยความจำของ Unity
หากใช้ Unity Engine เพื่อสร้างแอป ให้ทําตามคําแนะนําในการสํารวจหน่วยความจําของ Unity Unity มีเครื่องมือ 2 รายการสำหรับวิเคราะห์การใช้หน่วยความจำในแอปพลิเคชันของคุณใน Unity
รายการแรกคือโมดูลเครื่องมือวิเคราะห์หน่วยความจำ ซึ่งเป็นเครื่องมือวิเคราะห์ในตัวที่ให้ข้อมูลพื้นฐานเกี่ยวกับตําแหน่งที่แอปพลิเคชันใช้หน่วยความจํา

เครื่องมือที่ 2 คือแพ็กเกจเครื่องมือวิเคราะห์หน่วยความจำ ซึ่งเป็นแพ็กเกจ Unity ที่คุณสามารถเพิ่มลงในโปรเจ็กต์ได้ แพ็กเกจนี้จะเพิ่มหน้าต่างเครื่องมือวิเคราะห์หน่วยความจำอีกหน้าต่างลงใน Unity Editor เครื่องมือวิเคราะห์หน่วยความจําช่วยให้คุณวิเคราะห์การใช้งานหน่วยความจําในแอปพลิเคชันได้อย่างละเอียดยิ่งขึ้น คุณสามารถจัดเก็บและเปรียบเทียบภาพรวมเพื่อหาการรั่วไหลของหน่วยความจำ หรือดูเลย์เอาต์หน่วยความจำเพื่อหาปัญหาการกระจัดกระจายของหน่วยความจำ

Unreal Memory Insights
แอปที่สร้างโดย Unreal Engine สามารถใช้ข้อมูลเชิงลึกเกี่ยวกับหน่วยความจําของ Unreal เพื่อดูข้อมูลโดยละเอียดเกี่ยวกับการจองและการยกเลิกการจองหน่วยความจํา รวมถึงแท็กหน่วยความจําระดับล่าง (LLM) และกองคําเรียกที่เกี่ยวข้องกับบล็อกหน่วยความจํา
ระบบการค้นหาข้อมูลเชิงลึกเกี่ยวกับหน่วยความจําสามารถค้นหาการจัดสรรที่ใช้งานอยู่ ณ เวลาใดก็ได้ ระบุการเปลี่ยนแปลงในการใช้งานหน่วยความจํา ค้นหาหน่วยความจําที่รั่วไหล และแยกความแตกต่างระหว่างการจัดสรรระยะสั้นกับระยะยาว
ตั้งแต่ UE 5.4 เป็นต้นไป ข้อมูลเชิงลึกเกี่ยวกับหน่วยความจําจะรองรับการติดตามหน่วยความจําด้วยสแต็กการเรียกสำหรับโปรเจ็กต์ Android

ข้อมูลเชิงลึกเกี่ยวกับหน่วยความจําเหลือน้อย
Android มีคอลแบ็กและ API ที่ช่วยให้คุณลดข้อกำหนดด้านหน่วยความจำของเกมและระบุสาเหตุที่การเรียกใช้เกมก่อนหน้านี้สิ้นสุดลง
การติดต่อกลับ
อย่าลงทะเบียนเพื่อรับการเรียกกลับ trim ที่เลิกใช้งานแล้ว Android ไม่มี API สําหรับตรวจหาเหตุการณ์ความกดดันของหน่วยความจําแบบเนทีฟเมื่อระบบใช้หน่วยความจําถึงขีดจํากัด
แคล็กแบ็กการตัดไม่ช่วยป้องกันไม่ให้ระบบหยุดแอปเนื่องจากหน่วยความจำเหลือน้อย Android จึงเลิกใช้งานทั้งหมด ยกเว้น TRIM_MEMORY_UI_HIDDEN
และ TRIM_MEMORY_BACKGROUND
เกมสิ้นสุด
Android จะพยายามใช้หน่วยความจำที่มีอยู่ทั้งหมดเพื่อแคชแอปและเกมเพื่อให้โหลดได้อย่างรวดเร็ว (ปรับปรุงประสบการณ์ของผู้ใช้) แต่เมื่อหน่วยความจำมีจำกัด ระบบจะปิดแอปและเกมที่ใช้หน่วยความจำมากที่สุดเพื่อเพิ่มหน่วยความจำสำหรับการดำเนินการของอุปกรณ์ตามปกติ
ข้อมูล ข้อมูลเชิงลึก และแนวทางปฏิบัติแนะนำที่จะช่วยให้คุณใช้หน่วยความจำของเกมได้ดียิ่งขึ้นมีดังนี้
- ใช้
ApplicationExitInfo
: API นี้จะแสดงเหตุผลที่ระบบ Android หยุดเกมที่รันก่อนหน้านี้ ใช้ApplicationExitInfo
เพื่อตรวจสอบว่าหน่วยความจําเหลือน้อยหรือไม่ ซึ่งเป็นสาเหตุที่ทําให้กระบวนการก่อนหน้าสิ้นสุดการทํางาน ตรวจสอบว่าเกมหยุดทำงานเนื่องจากหน่วยความจำไม่เพียงพอหรือไม่ เพื่อให้สามารถเพิ่มประสิทธิภาพเกมให้ใช้หน่วยความจำในอุปกรณ์นั้นน้อยลง - ดูRAM จริงทั้งหมด:
เพื่อป้องกันไม่ให้ระบบปิดเกมเมื่ออยู่ในเบื้องหน้าและเพื่อให้สอดคล้องกับความสามารถของอุปกรณ์ ให้ดู RAM จริงทั้งหมดต่ออุปกรณ์เพื่อปรับการใช้หน่วยความจำของเกมโดยละเอียด หากเป้าหมายคือป้องกันไม่ให้ระบบปิดแอปในไม่ช้าหลังจากย้ายไปอยู่เบื้องหลัง (เพื่อให้ผู้เล่นทำงานหลายอย่างพร้อมกันได้) ให้ใช้การเรียกกลับtrim (
TRIM_MEMORY_UI_HIDDEN
โดยเฉพาะ) เพื่อลดการใช้หน่วยความจำของเกม