Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon สามารถใช้เครื่องมือในการติดตามการรั่วไหลของหน่วยความจำแบบเรียลไทม์สำหรับแอปพลิเคชัน MVVMCROSS


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


เครื่องมือส่วนหนึ่งของ XCode ได้รับการออกแบบมาเป็นหลักสำหรับแอพพลิเคชั่น iOS, MacOS, WatchOS และ TVOS ในขณะที่มันมีประสิทธิภาพอย่างไม่น่าเชื่อสำหรับการตรวจจับการรั่วไหลของหน่วยความจำในแพลตฟอร์มเหล่านี้โดยใช้เครื่องมือเช่นเครื่องมือรั่วไหลของเครื่องมือและการดีบักกราฟหน่วยความจำ แต่แอปพลิเคชันโดยตรงไปยังแอปพลิเคชัน MVVMcross มี จำกัด MVVMCROSS เป็นเฟรมเวิร์กข้ามแพลตฟอร์มที่อนุญาตให้มีการพัฒนาสำหรับหลายแพลตฟอร์มรวมถึง Android และ iOS

อย่างไรก็ตามหากคุณกำลังพัฒนาแอปพลิเคชัน MVVMCROSS สำหรับ iOS คุณสามารถใช้เครื่องมือเพื่อติดตามการรั่วไหลของหน่วยความจำแบบเรียลไทม์สำหรับส่วน iOS ของแอปของคุณ นี่คือวิธี:

การใช้เครื่องมือสำหรับแอปพลิเคชัน iOS MVVMCROSS

1. เครื่องมือเปิดใช้งาน: เริ่มต้นด้วยการเปิดโครงการของคุณใน XCODE และเลือกผลิตภัณฑ์> โปรไฟล์ สิ่งนี้จะเปิดตัวเครื่องมือ

2. เลือกเทมเพลตการรั่วไหล: ในกล่องโต้ตอบการเลือกเทมเพลตเลือกเทมเพลตการรั่วไหลภายใต้ส่วนหน่วยความจำ เทมเพลตนี้ได้รับการออกแบบมาโดยเฉพาะเพื่อตรวจจับการรั่วไหลของหน่วยความจำ

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

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

5. ระบุและแก้ไขการรั่วไหล: ใช้ร่องรอยสแต็กเพื่อค้นหาแหล่งที่มาของการรั่วไหลในรหัสของคุณ ปัญหาทั่วไปรวมถึงการรักษารอบที่วัตถุมีการอ้างอิงที่แข็งแกร่งซึ่งกันและกันป้องกันการจัดการ การแก้ไขสิ่งเหล่านี้เกี่ยวข้องกับการทำลายวงจรการรักษาบ่อยครั้งโดยใช้การอ้างอิงที่อ่อนแอหรือไม่ได้เป็นเจ้าของ

ข้อ จำกัด สำหรับแพลตฟอร์มที่ไม่ใช่ไอโอ

สำหรับแอปพลิเคชัน MVVMCROSS ที่กำหนดเป้าหมายแพลตฟอร์มอื่นนอกเหนือจาก iOS (เช่น Android) เครื่องมือไม่สามารถใช้โดยตรงได้ คุณจะต้องใช้เครื่องมือเฉพาะแพลตฟอร์มสำหรับการตรวจจับการรั่วไหลของหน่วยความจำ:

- Android: ใช้เครื่องมือเช่น Profiler หน่วยความจำของ Android Studio หรือห้องสมุดบุคคลที่สามเช่น Leakcanary
- แพลตฟอร์มอื่น ๆ : ใช้ประโยชน์จากเครื่องมือการทำโปรไฟล์หน่วยความจำเฉพาะแพลตฟอร์มหรือไลบรารี

โดยสรุปในขณะที่เครื่องมือมีประสิทธิภาพสูงสำหรับการตรวจจับการรั่วไหลของหน่วยความจำในแอพพลิเคชั่น iOS รวมถึงที่สร้างด้วย MVVMcross สำหรับ iOS แต่ก็ไม่สามารถใช้ได้กับแพลตฟอร์มที่ไม่ใช่ IOS สำหรับการพัฒนาข้ามแพลตฟอร์มคุณต้องใช้เครื่องมือเฉพาะสำหรับแต่ละแพลตฟอร์มเป้าหมาย

การอ้างอิง:
[1] https://www.netguru.com/blog/what-are-ios-memory-leaks-and-how-to-detect-them
[2] https://www.reddit.com/r/rust/comments/kpsgin/how_to_find_a_memory_leak_in_a_rust_program/
[3] https://stackoverflow.com/questions/38592689/memory-leak-check-in-real-time-application
[4] https://www.kodeco.com/books/swiftui-cookbook/v1.0/chapters/9-finding-memory-leaks-using-instruments
[5] https://stackoverflow.com/questions/27008035/mvvmcross-memory-leak-because-o-not-disposed-viewmodels
[6] https://forums.ni.com/t5/labview/get-object-memory-leak/td-p/4276905
[7] https://forums.developer.apple.com/forums/thread/770061
[8] https://github.com/mvvmcross/mvvmcross/issues/2884