ประสบการณ์ของผู้ใช้ที่ยอดเยี่ยมเป็นหัวใจสำคัญของภารกิจของ Android และการทำตามสัญญาดังกล่าวต้องทำให้อุปกรณ์รวดเร็ว ตอบสนองได้ดี และเชื่อถือได้ ด้วยเหตุนี้ การเพิ่มประสิทธิภาพหน่วยความจำจึงมีความสำคัญมากกว่าที่เคย ในระบบนิเวศ อุปกรณ์ใหม่ๆ ยังคงรักษาหรือแม้แต่ลดความจุหน่วยความจำจริงเพื่อตอบสนองต่อราคาหน่วยความจำที่เพิ่มขึ้น แต่ผู้ใช้ยังคงคาดหวังประสบการณ์การใช้งานแอปที่ราบรื่นและมีประสิทธิภาพสูงเช่นเดิม
ใน Android 17 เราได้เปิดตัวการจำกัดหน่วยความจำต่อแอป โดยเริ่มจากอุปกรณ์ Pixel เพื่อช่วยปกป้องประสบการณ์ของผู้ใช้โดยรวมจากแอปพลิเคชันที่ใช้หน่วยความจำมากเกินไปและทำให้ระบบช้าลงทั้งระบบ ในปีหน้า ผู้ผลิตจำนวนมากขึ้นจะใช้ประโยชน์จากขีดจำกัดหน่วยความจำต่อแอปของ Android ในการกำหนดค่า RAM ของอุปกรณ์ต่างๆ ตั้งแต่ 4 GB ไปจนถึงอุปกรณ์ที่มี RAM 16 GB ขึ้นไป หากแอปของคุณเกินขีดจำกัดเหล่านี้ ระบบจะลดความเร็วของแอปและอาจยกเลิกการใช้งาน การเพิ่มประสิทธิภาพการใช้หน่วยความจำของแอปเป็นสิ่งจำเป็นเพื่อป้องกันไม่ให้ระบบปฏิบัติการจำกัดอัตราการส่งข้อมูลและรักษาประสบการณ์ของผู้ใช้ให้ราบรื่น
ในโพสต์นี้ เราจะมาดูว่าขีดจำกัดเหล่านี้ทำงานอย่างไรเบื้องหลัง วิธีวัดหน่วยความจำที่ใช้โดยใช้เมตริก Android Vitals ใหม่ และขั้นตอนที่นำไปใช้ได้จริงเพื่อเพิ่มประสิทธิภาพแอปหรือเกม
ทำความเข้าใจขีดจำกัดหน่วยความจำ
เมื่อแอปใช้หน่วยความจำเกินงบประมาณ Android จะดำเนินการอย่างต่อเนื่องเพื่อปกป้องการตอบสนองของอุปกรณ์ ดังนี้
- การสลับ zRAM: หากแอปถึงขีดจำกัดที่จัดสรรไว้ ระบบจะบังคับให้หน้าเว็บของแอปไปอยู่ใน zRAM (RAM ที่บีบอัด) แม้ว่า zRAM จะป้องกันการนำออกทันที แต่การบีบอัดและคลายการบีบอัดหน้าเว็บจะเพิ่มค่าใช้จ่ายของ CPU ซึ่งอาจส่งผลให้ UI ทำงานช้าลงอย่างเห็นได้ชัดและประสบการณ์การใช้งานช้าลง
- การสิ้นสุดกระบวนการ: หากแอปยังคงเพิ่มการใช้งานหน่วยความจำเกินเกณฑ์ zRAM ระบบจะสิ้นสุดกระบวนการของแอป หากต้องการตรวจสอบว่าเซสชันแอปได้รับผลกระทบจากข้อจำกัดเหล่านี้ในฟิลด์หรือไม่ คุณสามารถเรียกใช้
getDescription()ภายในApplicationExitInfoหากระบบใช้ขีดจำกัด ระบบจะรายงานเหตุผลในการออกเป็นREASON_OTHERและสตริงคำอธิบายจะมี "MemoryLimiter:AnonSwap" คุณยังใช้การสร้างโปรไฟล์ตามทริกเกอร์ได้ด้วยTRIGGER_TYPE_ANOMALYเพื่อบันทึกฮีปดัมป์โดยอัตโนมัติเมื่อถึงขีดจำกัดของหน่วยความจำ
ดูข้อมูลเพิ่มเติมเกี่ยวกับขีดจำกัดหน่วยความจำต่อแอปและการบังคับใช้ของระบบได้ในเอกสารประกอบเกี่ยวกับขีดจำกัดหน่วยความจำของแอปใน Android 17 หากต้องการทดสอบแอปพลิเคชันในการกำหนดค่าอุปกรณ์ต่างๆ ให้ใช้คำสั่ง adb ของ Memory Limiter
การตรวจสอบและการวินิจฉัยปัญหาเกี่ยวกับหน่วยความจำ
คุณไม่สามารถเพิ่มประสิทธิภาพสิ่งที่วัดค่าไม่ได้ การระบุหน่วยความจำรั่ว การจัดสรรฮีปมากเกินไป และข้อขัดข้องเนื่องจากหน่วยความจำไม่เพียงพอ (OOM) ในระบบนิเวศ Android ต้องใช้เครื่องมือตรวจสอบเสริม
- สุขภาพระดับมหภาคด้วย Android Vitals: Android Vitals ของ Google Play Console มีเมตริกที่สำคัญ เช่น การใช้งานหน่วยความจำ (RSS แบบไม่ระบุตัวตน + Swap) และการใช้งานหน่วยความจำบิตแมป เพื่อให้มองเห็นภาพรวมระดับประชากรโดยไม่ต้องมีค่าใช้จ่ายเพิ่มเติม ซึ่งจะช่วยให้คุณเห็นภาพรวมที่ชัดเจนของการกระจายหน่วยความจำในสถานะกระบวนการต่างๆ (เบื้องหน้า เบื้องหลัง บริการที่ผู้ใช้รับรู้ และแคช) และช่วงคลาส RAM ซึ่งจะช่วยให้คุณระบุค่าผิดปกติของหน่วยความจำได้
- การออกจากการจำกัดหน่วยความจำและการติดตาม OOM ด้วย Firebase Crashlytics: Crashlytics เวอร์ชัน 20.1.0 มีข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติมเพื่อช่วยให้คุณตรวจจับ จัดลำดับความสำคัญ และแก้ไขข้อยกเว้น Out-Of-Memory และการปิดการจำกัดหน่วยความจำได้ เพื่อให้คุณทราบถึงการเสื่อมของหน่วยความจำอย่างรุนแรงก่อนที่จะส่งผลต่อเมตริกหลัก การติดตามเหตุการณ์เหล่านี้ควบคู่ไปกับบันทึกที่กำหนดเองและข้อมูลเมตาของคีย์-ค่าจะช่วยให้คุณทราบบริบทของสถานะกระบวนการได้ทันทีเมื่อเกิดข้อผิดพลาดเกี่ยวกับหน่วยความจำ
- การติดตามในฟิลด์ด้วย ProfilingManager: สำหรับทีมที่สามารถดูแลเฟรมเวิร์กความสามารถในการสังเกตประสิทธิภาพ
ProfilingManagerAPI ที่เปิดตัวใน Android 15 (ระดับ API 35) จะช่วยให้แอปของคุณขอและรวบรวมอาร์ติแฟกต์การแก้ไขข้อบกพร่องของหน่วยความจำแบบเป็นโปรแกรมได้ เช่น ฮีปดัมป์ของ Java และโปรไฟล์ฮีปจากอุปกรณ์ที่ใช้งานจริงโดยตรง นอกจากนี้ คุณยังทริกเกอร์การจับภาพฮีปดัมป์ตามสัญญาณของระบบที่เฉพาะเจาะจงได้ด้วย เช่นTRIGGER_TYPE_OOMและTRIGGER_TYPE_ANOMALY
อ่านข้อมูลเพิ่มเติมเกี่ยวกับเทคนิคการตรวจสอบหน่วยความจำอื่นๆ ได้ในเอกสารประกอบ
สรุปและขั้นตอนถัดไป
เมื่อ Android ขยายขีดจำกัดหน่วยความจำต่อแอปใน RAM ทุกคลาส ตอนนี้จึงเป็นเวลาที่เหมาะสมในการตรวจสอบหน่วยความจำที่ใช้
- ให้ความสำคัญกับการเพิ่มประสิทธิภาพหน่วยความจำ: ป้องกันไม่ให้แอปได้รับผลกระทบจากขีดจำกัดหน่วยความจำของแอปโดยใช้แนวทางปฏิบัติแนะนำ
- ตรวจสอบการใช้หน่วยความจำ: ตรวจสอบลักษณะการทำงานของหน่วยความจำของแอปเพื่อตรวจหาและแก้ไขลักษณะการทำงานที่ผิดปกติ
- เพิ่มประสิทธิภาพเกม: ทำตามคำแนะนำล่าสุดสำหรับเกมและแอปมัลติมีเดียที่ซับซ้อนเพื่อประหยัดหน่วยความจำสูงสุดในสถานะของกระบวนการต่างๆ
แหล่งข้อมูลและการอ้างอิงที่เป็นประโยชน์
- การเปลี่ยนแปลงลักษณะการทำงานใน Android 17: ขีดจำกัดหน่วยความจำของแอป
- Android Vitals: การใช้งานหน่วยความจำ (เมตริก RSS + Swap) และการใช้งานหน่วยความจำบิตแมป
- บล็อกของนักพัฒนาแอป Android: การจัดลำดับความสำคัญของขั้นตอนการเพิ่มประสิทธิภาพหน่วยความจำสำหรับ Android 17
- คู่มือนักพัฒนาซอฟต์แวร์: จัดการหน่วยความจำของแอป
-
ข่าวสารผลิตภัณฑ์วันนี้เราจะเปิดตัว Android 17 และพร้อมให้บริการในอุปกรณ์ Pixel ส่วนใหญ่ที่รองรับ โปรดรอติดตามอุปกรณ์ใหม่ที่ใช้ Android 17 ในอีกไม่กี่เดือนข้างหน้า
Matthew McCullough • อ่าน 13 นาที -
ข่าวสารผลิตภัณฑ์ในงาน Google I/O ‘26 เราได้แสดงให้เห็นว่าความก้าวหน้าล่าสุดในระบบนิเวศของ Android ช่วยให้คุณยกระดับคุณภาพของแอปไปพร้อมกับการเพิ่มประสิทธิภาพการพัฒนาสูงสุดได้อย่างไร
Ataul Munim • อ่าน 3 นาที -
ข่าวสารผลิตภัณฑ์เสาหลักของระบบนิเวศของ Android คือความมุ่งมั่นร่วมกันในการสร้างความไว้วางใจจากผู้ใช้ เมื่อภูมิทัศน์ของอุปกรณ์เคลื่อนที่พัฒนาไป แนวทางในการปกป้องข้อมูลที่ละเอียดอ่อนของเราก็พัฒนาตามไปด้วย
Robert Clifford • อ่าน 3 นาที
รับข้อมูลเชิงลึกด้านการพัฒนาแอป Android ล่าสุดส่งตรงถึงกล่องจดหมายของคุณทุกสัปดาห์