การติดตั้งใช้งาน Jetpack Compose
หน้านี้มีข้อมูลเกี่ยวกับการค้นหาและการเรียกใช้หน่วยความจำรั่วที่ มีเฉพาะในเลย์เอาต์ที่อิงตาม View ดูข้อมูลหลักเกี่ยวกับการจับภาพและวิเคราะห์ฮีปดัมป์ได้ที่จับภาพฮีปดัมป์
ค้นหาหน่วยความจำรั่วไหล
หากต้องการกรองชั้นเรียนที่อาจเชื่อมโยงกับการรั่วไหลของหน่วยความจำอย่างรวดเร็ว ให้เปิดเมนูแบบเลื่อนลงของชั้นเรียน แล้วเลือกแสดงการรั่วไหลของกิจกรรม/Fragment Android Studio
จะแสดงคลาสที่คิดว่าบ่งบอกถึงการรั่วไหลของหน่วยความจำสำหรับอินสแตนซ์ Activity และ
Fragment ในแอปของคุณ ประเภท
ของข้อมูลที่ตัวกรองแสดงมีดังนี้
- อินสแตนซ์
Activityที่ถูกทำลายไปแล้วแต่ยังมีการอ้างอิงอยู่ Fragmentอินสแตนซ์ที่ไม่มีFragmentManagerที่ถูกต้องแต่ยังคงมีการอ้างอิง
โปรดทราบว่าตัวกรองอาจให้ผลบวกลวงในสถานการณ์ต่อไปนี้
- ระบบสร้าง
Fragmentแล้ว แต่ยังไม่ได้ใช้ - ระบบกำลังแคช
Fragmentแต่ไม่ได้แคชเป็นส่วนหนึ่งของFragmentTransaction
หากต้องการค้นหาหน่วยความจำรั่วไหลด้วยตนเองมากขึ้น ให้เรียกดูรายการคลาสและอินสแตนซ์เพื่อค้นหาออบเจ็กต์ที่มีขนาดที่คงไว้ขนาดใหญ่ มองหาหน่วยความจำรั่วที่เกิดจากรายการต่อไปนี้
- การอ้างอิงที่ใช้งานได้นานสำหรับ
ActivityContextViewDrawableและออบเจ็กต์อื่นๆ ที่อาจมีการอ้างอิงถึงคอนเทนเนอร์ActivityหรือContext - คลาสภายในที่ไม่ใช่แบบคงที่ เช่น a
Runnableซึ่งสามารถเก็บอินสแตนซ์Activityได้ - แคชที่เก็บออบเจ็กต์นานเกินความจำเป็น
เมื่อพบการรั่วไหลของหน่วยความจำที่อาจเกิดขึ้น ให้ใช้แท็บฟิลด์และการอ้างอิง ในรายละเอียดอินสแตนซ์เพื่อไปยังอินสแตนซ์หรือบรรทัดซอร์สโค้ดที่สนใจ
ทริกเกอร์หน่วยความจำรั่วไหลเพื่อการทดสอบ
หากต้องการทำให้เกิดหน่วยความจำรั่วเพื่อทดสอบในแอป คุณสามารถทริกเกอร์การรั่วได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- หมุนอุปกรณ์จากแนวตั้งเป็นแนวนอนและกลับมาเป็นแนวตั้งอีกครั้งหลายๆ ครั้ง
ขณะอยู่ในสถานะกิจกรรมต่างๆ การหมุนอุปกรณ์มักทำให้แอป
รั่วไหลของออบเจ็กต์
ActivityContextหรือViewเนื่องจากระบบจะสร้างActivityขึ้นมาใหม่ และหากแอปของคุณมีการอ้างอิงถึงออบเจ็กต์เหล่านั้นที่อื่น ระบบจะรวบรวมขยะไม่ได้ - สลับไปมาระหว่างแอปของคุณกับแอปอื่นขณะอยู่ในสถานะกิจกรรมต่างๆ เช่น ไปที่หน้าจอหลัก แล้วกลับไปที่แอป