บันทึกฮีปดัมป์ (มุมมอง)

การติดตั้งใช้งาน Jetpack Compose

หน้านี้มีข้อมูลเกี่ยวกับการค้นหาและการเรียกใช้หน่วยความจำรั่วที่ มีเฉพาะในเลย์เอาต์ที่อิงตาม View ดูข้อมูลหลักเกี่ยวกับการจับภาพและวิเคราะห์ฮีปดัมป์ได้ที่จับภาพฮีปดัมป์

ค้นหาหน่วยความจำรั่วไหล

หากต้องการกรองชั้นเรียนที่อาจเชื่อมโยงกับการรั่วไหลของหน่วยความจำอย่างรวดเร็ว ให้เปิดเมนูแบบเลื่อนลงของชั้นเรียน แล้วเลือกแสดงการรั่วไหลของกิจกรรม/Fragment Android Studio จะแสดงคลาสที่คิดว่าบ่งบอกถึงการรั่วไหลของหน่วยความจำสำหรับอินสแตนซ์ Activity และ Fragment ในแอปของคุณ ประเภท ของข้อมูลที่ตัวกรองแสดงมีดังนี้

  • อินสแตนซ์ Activity ที่ถูกทำลายไปแล้วแต่ยังมีการอ้างอิงอยู่
  • Fragment อินสแตนซ์ที่ไม่มี FragmentManager ที่ถูกต้องแต่ยังคงมีการอ้างอิง

โปรดทราบว่าตัวกรองอาจให้ผลบวกลวงในสถานการณ์ต่อไปนี้

  • ระบบสร้าง Fragment แล้ว แต่ยังไม่ได้ใช้
  • ระบบกำลังแคช Fragment แต่ไม่ได้แคชเป็นส่วนหนึ่งของ FragmentTransaction

หากต้องการค้นหาหน่วยความจำรั่วไหลด้วยตนเองมากขึ้น ให้เรียกดูรายการคลาสและอินสแตนซ์เพื่อค้นหาออบเจ็กต์ที่มีขนาดที่คงไว้ขนาดใหญ่ มองหาหน่วยความจำรั่วที่เกิดจากรายการต่อไปนี้

  • การอ้างอิงที่ใช้งานได้นานสำหรับ Activity Context View Drawable และออบเจ็กต์อื่นๆ ที่อาจมีการอ้างอิงถึงคอนเทนเนอร์ Activity หรือ Context
  • คลาสภายในที่ไม่ใช่แบบคงที่ เช่น a Runnable ซึ่งสามารถเก็บอินสแตนซ์ Activity ได้
  • แคชที่เก็บออบเจ็กต์นานเกินความจำเป็น

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

ทริกเกอร์หน่วยความจำรั่วไหลเพื่อการทดสอบ

หากต้องการทำให้เกิดหน่วยความจำรั่วเพื่อทดสอบในแอป คุณสามารถทริกเกอร์การรั่วได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

  • หมุนอุปกรณ์จากแนวตั้งเป็นแนวนอนและกลับมาเป็นแนวตั้งอีกครั้งหลายๆ ครั้ง ขณะอยู่ในสถานะกิจกรรมต่างๆ การหมุนอุปกรณ์มักทำให้แอป รั่วไหลของออบเจ็กต์ Activity Context หรือ View เนื่องจากระบบจะสร้าง Activity ขึ้นมาใหม่ และหากแอปของคุณมีการอ้างอิงถึงออบเจ็กต์เหล่านั้นที่อื่น ระบบจะรวบรวมขยะไม่ได้
  • สลับไปมาระหว่างแอปของคุณกับแอปอื่นขณะอยู่ในสถานะกิจกรรมต่างๆ เช่น ไปที่หน้าจอหลัก แล้วกลับไปที่แอป