Instruments ObjectAlloc: Penjelasan Live Bytes & Keseluruhan Bytes


86

Saya menggunakan alat ObjectAlloc Instument dalam upaya untuk memahami apa memori aplikasi saya (iPhone) lakukan dan kapan dan di mana itu melakukannya.

Saya sangat menginginkan penjelasan dasar dari statistik ini:

  • Byte Langsung
  • #Hidup
  • #Sementara
  • Byte Keseluruhan

Ketika saya mencoba mencari tahu berapa banyak memori yang digunakan aplikasi saya, apakah saya akan melihat Live Bytes atau Overall Bytes? Apakah ini termasuk memori bocor? Apa itu objek Transitory?

Terima kasih


6
kolom memiliki deskripsi singkat saat Anda mengarahkan kursor ke atas tajuknya.
Piotr Byzia

Jawaban:


110

ObjectAlloc melacak semua alokasi memori dan deallocation selama program Anda berjalan.

Jumlah Living bytes, or Net bytesmemori yang digunakan aplikasi Anda pada waktu yang Anda pilih di timeline. Itu akan termasuk memori bocor, karena memori bocor tidak pernah dibatalkan alokasinya.

#Livingadalah berapa banyak alokasi dari ukuran / tipe objek tertentu yang terjadi (dan masih dialokasikan). Ini sangat berguna saat mencari kebocoran.

Misalnya, jika Anda berulang kali melakukan tindakan (seperti keluar dari pengontrol tampilan modal), dan Anda melihat bahwa #Livingsuatu objek tumbuh dengan jumlah yang sama setiap kali, maka Anda mungkin membocorkan objek tersebut. Anda kemudian dapat mengonfirmasi dengan menelusuri dan melihat baris kode yang tepat yang mengalokasikan objek, dan bahkan melihat indeks waktu setiap objek dibuat.

Overall bytestermasuk memori yang telah dirilis. Ini berguna untuk melacak angka itu untuk tujuan pengoptimalan kinerja, tetapi tidak jika Anda hanya mencoba melihat jejak memori Anda saat ini atau mencari kebocoran.


3
Apa yang ingin Anda optimalkan dalam kaitannya dengan Keseluruhan Bytes? Mencoba untuk menjaga jumlah kecil berarti kinerja yang lebih baik?
Dan Rosenstark

4
Ya benar. Penyebab umum masalah kinerja adalah menjalankan kode yang sama lebih dari sekali secara tidak sengaja. Alat Alokasi bisa menjadi cara yang baik untuk memperhatikan. Misalnya, meskipun objek tambahan tidak bocor, Anda dapat berkata, "Mengapa saya membuat 3 objek itu? Seharusnya hanya ada satu!"
Ken Aspeslagh

2
Byte langsung adalah jumlah memori yang digunakan aplikasi Anda saat ini. Keseluruhan hanyalah total dari semua alokasi yang telah dibuat aplikasi Anda (termasuk memori yang telah dibebaskan.)
Ken Aspeslagh

1
@KenAspesl. Mengapa saya harus peduli tentang byte secara keseluruhan, jika itu juga berisi objek yang dirilis?
Dejell

3
Jika Anda menyesuaikan performa, Anda ingin meminimalkan jumlah alokasi yang dibuat aplikasi Anda saat berjalan (meskipun Anda tidak membocorkan alokasi tersebut.) Alokasi yang berlebihan sering kali dapat menjadi indikator bahwa Anda salah melakukannya.
Ken Aspeslagh

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.