Pertanyaan Bagaimana cara profil penggunaan memori & kinerja dengan Instrumen?


Dari semua Trace Template Instrumen, saya suka menggunakan:

  • Zombies untuk mendeteksi di mana objek semakin over-dirilis, bagus untuk debugging EXEC_BAD_ACCESS kesalahan.
  • Kebocoran untuk mendeteksi kebocoran memori.
  • Core Animation w Color Blended Layers untuk mendeteksi tingkat frame & subview tembus pandang, bagus untuk merapikan UITableView menggulir.

Saya selalu mendengar orang-orang mengatakan untuk memberi profil penggunaan & kinerja memori aplikasi saya.

  1. Mengapa saya harus profil & kinerja penggunaan memori? Aplikasi saya berjalan dengan baik.
  2. Bagaimana saya melakukannya?

Saya telah menggunakan Alokasi dan melihat bahwa aplikasi iPhone saya dimulai pada total memori yang dialokasikan 1 MB dan tumbuh hingga 5 MB setelah penggunaan normal. Berapa jumlah penggunaan memori yang terlalu tinggi pada iPhone? iPad? Mac?


50
2017-07-10 14:08


asal


Jawaban:


Untuk menjawab mengapa, profil penggunaan memori sangat penting untuk aplikasi iOS karena iPhone dan iPad memiliki lebih sedikit RAM daripada Mac. IPhone 4 memiliki RAM 512 MB, tetapi versi sebelumnya memiliki 256 atau 128 MB. Faktor dalam RAM yang digunakan OS dan multitasking, dan aplikasi Anda tidak memiliki banyak RAM yang terbuang jadi penting untuk mengetahui berapa banyak memori yang digunakan aplikasi Anda.

Membuat profil kinerja adalah sesuatu yang biasanya Anda lakukan ketika aplikasi Anda berjalan lambat. Profil itu untuk menemukan titik-titik lambat dalam kode Anda sehingga Anda dapat membuat kode berjalan lebih cepat. Jika aplikasi Anda berjalan dengan baik, Anda tidak perlu terlalu banyak profil untuk kinerja.

Untuk menjawabnya, gunakan instrumen Alokasi untuk mengukur penggunaan memori. Kolom Byte Langsung dalam kategori Semua Alokasi memberitahu Anda jumlah memori yang digunakan aplikasi Anda saat ini. Analisis heapshot instrumen Alokasi mengukur pertumbuhan memori di aplikasi Anda. Gunakan menu di sisi kiri dari jump bar untuk melakukan analisis heapshot.

Instrumen Waktu Profiler profil aplikasi Anda untuk kinerja. Bagian yang sulit menggunakan instrumen Waktu Profiler adalah menafsirkan hasil. Instrumen Waktu Profiler tidak akan memberi tahu Anda bahwa aplikasi Anda menghabiskan 75% waktunya di Fungsi X. Anda harus menggali data untuk menemukan titik-titik lambat dalam kode Anda.

Mengenai penggunaan memori yang dapat diterima, itu tergantung pada perangkat yang ingin Anda dukung dan aplikasi. Aplikasi seperti Xcode menggunakan 100 MB RAM akan baik-baik saja, tetapi aplikasi seperti TextEdit menggunakan 100 MB untuk satu dokumen halaman akan menjadi masalah. 5 MB seharusnya tidak menjadi masalah untuk aplikasi iOS.


74
2017-07-11 18:48



Untuk menjawab beberapa komentar dalam jawaban Markus:

Alokasi byte hidup tidak termasuk memori tekstur OpenGL, yang digunakan oleh CALayer / UIViews. Ini adalah sumber ketidaksepakatan dengan Monitor Memori.

Lihat jawaban untuk pertanyaan ini di sini: Memahami konsumsi memori pada iPhone


7
2017-07-17 01:48



Memori yang benar-benar dimuat ke memori fisik perangkat adalah Resident Memory di VM Tracker Instrument.

Allocation Instrument hanya menandai memori yang dibuat oleh malloc/[NSObject alloc] dan beberapa kerangka buffer, misalnya, bitmap gambar dekompresi tidak termasuk dalam Allocation Instrument tetapi selalu membutuhkan sebagian besar memori Anda.

Harap Tonton WWDC 2012 Sesi 242 Kinerja Aplikasi iOS: Memori untuk mendapatkan informasi dari Apple.


3
2017-08-22 01:54