Instruments Allocations dan Leaks
Melacak alokasi heap, menemukan kebocoran memori, dan mendeteksi objek zombie.
Instruments Allocations dan Leaks adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Instrumen Alokasi
Instrumen Alokasi melacak setiap alokasi dan dealokasi heap, serta menampilkan pertumbuhan memori dari waktu ke waktu.
// Instruments → Allocations template
// Shows live bytes, allocation count, and transient objectsAnalisis Pertumbuhan Heap
Gunakan app Anda dan amati grafik Live Bytes. Pertumbuhan yang terus berlangsung tanpa mencapai tingkat datar menunjukkan adanya kebocoran memori.
// Normal: allocations rise and fall as views appear/disappear
// Leak: allocations only grow, never releasedAnalisis Generasi
Tandai cuplikan generasi sebelum dan sesudah alur pengguna untuk melihat objek mana yang tetap ada secara tidak terduga.
// Instruments toolbar → "Mark Generation"
// Perform action (e.g., open and close a screen)
// "Mark Generation" again
// Inspect objects in the new generation that weren't releasedInstrumen Kebocoran
Instrumen Kebocoran secara berkala memindai heap dan mengidentifikasi objek yang dialokasikan tetapi tidak dapat dijangkau (siklus retensi).
// Run Leaks alongside Allocations in the "Leaks" template
// Red bars in the timeline = leaked objects detected
// Click a bar to see the leaked object graphMembaca Grafik Kebocoran
Grafik objek kebocoran menunjukkan objek mana yang saling mempertahankan dalam suatu siklus, sehingga akar siklus retensi dapat diketahui.
// Example cycle:
// ViewController → ViewModel → Closure → ViewController
// Instruments draws the reference edges visuallyMendeteksi Siklus Retensi dalam Closure
Kebocoran yang paling umum terjadi saat closure menangkap self secara kuat, sementara self menyimpan closure tersebut.
class MyVC: UIViewController {
var onComplete: (() -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
// LEAK: closure captures self; self holds onComplete
onComplete = { self.dismiss(animated: true) }
// FIX:
onComplete = { [weak self] in self?.dismiss(animated: true) }
}
}Instrumen Pelacak VM
Pelacak VM menampilkan wilayah memori virtual dan halaman kotor. Tekanan memori kotor yang tinggi menyebabkan iOS menghentikan app Anda.
// Instruments → "VM Tracker" in allocation instrument
// Look for: large __DATA dirty pages, high CG raster memoryObjek Zombie
Aktifkan Objek Zombie di Instruments untuk menangkap objek yang dilepas secara berlebihan—objek tersebut diubah menjadi "zombie" yang mencatat aktivitas saat diakses.
// Instruments → Edit → Record Settings → Enable Zombie Objects
// Accessing a zombie prints: "*** -[MyObject method] sent to deallocated instance"Cuplikan Heap
Bandingkan dua keadaan heap dengan "Cuplikan Heap" untuk menemukan objek yang bertahan di antara kedua cuplikan—sangat berguna untuk mendeteksi kebocoran pada pengendali tampilan.
// After navigating to and from a screen twice:
// Heap should return to baseline
// Objects remaining in the diff = leaked view controllers or modelsMetricKit untuk Memori Produksi
Gunakan MXMetricPayload untuk mengumpulkan data memori dan kinerja dari pengguna nyata dalam lingkungan produksi.
import MetricKit
class AppDelegate: UIApplicationDelegate, MXMetricManagerSubscriber {
func didReceive(_ payloads: [MXMetricPayload]) {
payloads.forEach { print($0.memoryMetrics as Any) }
}
}Pemeriksaan Singkat
Apa yang ditunjukkan oleh grafik "Live Bytes" yang terus meningkat dalam instrumen Alokasi?
Ringkasan Pelajaran
Gunakan Alokasi untuk melacak pertumbuhan heap dan cuplikan generasi. Gunakan Kebocoran untuk mendeteksi siklus retensi dan melihat grafik objek. Gunakan Objek Zombie untuk bug pelepasan berlebihan. Perbaiki closure dengan [weak self]. Gunakan MetricKit untuk melacak memori pengguna nyata dalam produksi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Instruments Allocations dan Leaks” gratis?
Ya — teks lengkap “Instruments Allocations dan Leaks” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Instruments Allocations dan Leaks”?
Melacak alokasi heap, menemukan kebocoran memori, dan mendeteksi objek zombie. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Instruments Allocations dan Leaks” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar Instruments: Time Profiler
- Instruments Allocations dan Leaks
- Pemeriksa Thread Utama dan Kemacetan
- Mengoptimalkan Jalur Sibuk: COW, Inlining, dan Spesialisasi