Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Bagaimana cara menggunakan debugger grafik memori untuk mengidentifikasi siklus mempertahankan dalam aplikasi mvvmcross


Bagaimana cara menggunakan debugger grafik memori untuk mengidentifikasi siklus mempertahankan dalam aplikasi mvvmcross


Menggunakan debugger grafik memori di Xcode adalah cara yang efektif untuk mengidentifikasi siklus mempertahankan dalam aplikasi MVVMCross. Berikut panduan langkah demi langkah tentang cara melakukannya:

Pengantar Debugger Grafik Memori

Debugger grafik memori adalah alat yang ampuh dalam Xcode yang membantu pengembang mengidentifikasi kebocoran memori dan mempertahankan siklus dengan memvisualisasikan hubungan objek dalam memori. Ini memberikan snapshot dari keadaan memori saat ini, menunjukkan objek mana yang dipertahankan dan bagaimana mereka direferensikan.

Langkah -langkah untuk mengidentifikasi siklus mempertahankan

1. Jalankan aplikasi Anda: Mulailah dengan menjalankan aplikasi MVVMCross Anda di Xcode. Pastikan Anda menguji bagian spesifik dari aplikasi di mana Anda mencurigai siklus penahan mungkin terjadi.

2. Buka Debugger Grafik Memori: Setelah aplikasi Anda berjalan, buka debugger grafik memori dengan mengklik tombol tiga simpul yang terletak di antara debugger visual dan tombol simulator lokasi di bilah alat Xcode. Ini akan menangkap snapshot memori dari keadaan aplikasi Anda saat ini.

3. Analisis Snapshot Memori: Di ​​panel kiri debugger grafik memori, Anda akan melihat daftar objek yang saat ini ada dalam memori, bersama dengan jumlah contoh dari setiap kelas. Cari objek yang seharusnya tidak ada di sana atau yang memiliki jumlah instance yang sangat tinggi.

4. Identifikasi siklus mempertahankan: Pilih objek dari panel kiri untuk melihat grafik rujukannya. Grafik akan menunjukkan referensi yang kuat sebagai garis tebal dan referensi yang tidak diketahui (yang bisa lemah atau kuat) sebagai garis abu -abu muda. Siklus mempertahankan ditunjukkan oleh loop dalam grafik di mana objek saling mereferensikan dengan cara yang mencegah mereka menjadi deallocated.

5. Navigasi Grafik Objek: Untuk melacak sumber siklus penahan, Anda mungkin perlu menavigasi melalui beberapa grafik objek. Mulailah dengan objek bocor dan ikuti referensi ke belakang untuk menemukan objek induk yang mempertahankannya.

6. Periksa detail objek: Ketika Anda mengklik pada node di grafik, panel inspeksi akan memberikan informasi terperinci tentang objek, termasuk sifat dan hubungannya. Ini dapat membantu Anda memahami mengapa suatu objek dipertahankan.

7. Ulangi Aliran Inti: Untuk mengkonfirmasi siklus penahan, ulangi aliran inti atau fitur di aplikasi Anda beberapa kali, mengambil snapshot memori setelah setiap iterasi. Jika jumlah contoh objek tertentu meningkat dari waktu ke waktu, itu bisa menunjukkan siklus mempertahankan.

8. Perbaiki siklus mempertahankan: Setelah Anda mengidentifikasi sumber siklus penahan, Anda dapat memperbaikinya dengan mengubah referensi yang kuat menjadi referensi yang lemah atau tidak dimiliki jika perlu. Misalnya, dalam penutupan, gunakan `[diri lemah]` untuk menghindari `diri sendiri dengan kuat.

skenario siklus mempertahankan umum di mvvmcross

Dalam aplikasi MVVMCross, mempertahankan siklus sering terjadi karena referensi yang kuat antara model tampilan dan tampilan atau karena penutupan yang menangkap model tampilan atau tampilan dengan kuat. Misalnya, jika model tampilan memegang referensi yang kuat untuk tampilan dan tampilan juga memegang referensi yang kuat kembali ke model tampilan, tidak ada yang dapat dialokasikan.

Untuk mencegah siklus seperti itu, pastikan bahwa model tampilan Anda dibersihkan dengan benar ketika pandangan diberhentikan. Gunakan metode siklus hidup yang disediakan oleh MVVMCross, seperti `menghilang ()`, untuk melepaskan sumber daya dan memecahkan referensi yang tidak perlu.

Dengan mengikuti langkah -langkah ini dan memahami bagaimana hubungan objek divisualisasikan dalam debugger grafik memori, Anda dapat secara efektif mengidentifikasi dan memperbaiki siklus mempertahankan dalam aplikasi MVVMCross Anda.

Kutipan:
[1] https://doordash.engineering/2019/05/22/ios-memory-leaks-and-retain-cycle-detection-using-xcodes-memory-graph-debugger/
[2] https://careersatdoordash.com/blog/ios-memory-weaks-and-retain-cycle-detection-using-xcodes-memory-graph-debugger/
[3] https://www.tothenew.com/blog/memory-leak-with-memory-graph-debugger/
[4] https://forums.developer.apple.com/forums/thread/112268
[5] https://www.mvvmcross.com/mvvmcross-5-release/
[6] https://www.donnywals.com/using-xcodes-memory-graph-to-find-memory-leaks/
[7] https://moldstud.com/articles/p-swift-memory-management-tips-for-retain-cycle-issues
[8] https://www.mvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9] https://digginginthecode.wordpress.com/2016/06/14/xamarin-performance-advices/