Swift Academy · Ders

Allocations ve Leaks Instruments

Öbek ayırmalarını izleyin, bellek sızıntılarını ve zombi nesnelerini bulun.

2. ders / 412 adım

Allocations ve Leaks Instruments, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Allocations Aracı

Allocations aracı, her yığın ayırma ve serbest bırakma işlemini izleyerek belleğin zaman içinde büyümesini gösterir.

// Instruments → Allocations template
// Shows live bytes, allocation count, and transient objects

Yığın Büyümesi Analizi

Uygulamanızı kullanın ve Live Bytes grafiğini izleyin. Bir düzlüğe ulaşmadan sürekli büyüme, bellek sızıntısına işaret eder.

// Normal: allocations rise and fall as views appear/disappear
// Leak: allocations only grow, never released

Nesil Analizi

Beklenmedik şekilde hangi nesnelerin varlığını sürdürdüğünü görmek için bir kullanıcı akışından önce ve sonra nesil anlık görüntüsü işaretleyin.

// 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 released

Leaks Aracı

Leaks aracı, yığını düzenli aralıklarla tarar ve ayrılmış ancak erişilemeyen nesneleri (tutma döngülerini) belirler.

// Run Leaks alongside Allocations in the "Leaks" template
// Red bars in the timeline = leaked objects detected
// Click a bar to see the leaked object graph

Sızıntı Grafiğini Okuma

Sızıntı nesne grafiği, hangi nesnelerin bir döngü içinde birbirlerini tuttuğunu göstererek tutma döngüsünün kökünü belirler.

// Example cycle:
// ViewController → ViewModel → Closure → ViewController
// Instruments draws the reference edges visually

Kapanışlardaki Tutma Döngülerini Algılama

En yaygın sızıntı şudur: bir kapanış self değerini güçlü biçimde yakalarken self de kapanışı tutar.

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) }
  }
}

VM Tracker Aracı

VM Tracker, sanal bellek bölgelerini ve kirli sayfaları gösterir. Yüksek kirli bellek baskısı, iOS'un uygulamanızı sonlandırmasına neden olur.

// Instruments → "VM Tracker" in allocation instrument
// Look for: large __DATA dirty pages, high CG raster memory

Zombi Nesneleri

Aşırı serbest bırakılmış nesneleri yakalamak için Instruments'ta Zombie Objects seçeneğini etkinleştirin; bu nesneler erişildiklerinde günlük kaydı oluşturan "zombilere" dönüştürülür.

// Instruments → Edit → Record Settings → Enable Zombie Objects
// Accessing a zombie prints: "*** -[MyObject method] sent to deallocated instance"

Yığın Görüntüleri

İki yığın durumunu "Heap Shot" ile karşılaştırarak görüntüler arasında varlığını sürdüren nesneleri bulun; bu yöntem görünüm denetleyicisi sızıntılarını algılamak için çok kullanışlıdır.

// After navigating to and from a screen twice:
// Heap should return to baseline
// Objects remaining in the diff = leaked view controllers or models

Üretim Belleği İçin MetricKit

Üretimdeki gerçek kullanıcılardan bellek ve performans verileri toplamak için MXMetricPayload kullanın.

import MetricKit
class AppDelegate: UIApplicationDelegate, MXMetricManagerSubscriber {
  func didReceive(_ payloads: [MXMetricPayload]) {
    payloads.forEach { print($0.memoryMetrics as Any) }
  }
}

Kısa Kontrol

Allocations aracındaki "Live Bytes" grafiğinin istikrarlı biçimde büyümesi neyi gösterir?

Ders Özeti

Yığın büyümesini ve nesil anlık görüntülerini izlemek için Allocations'ı kullanın. Tutma döngülerini algılamak ve nesne grafiğini görüntülemek için Leaks'i kullanın. Aşırı serbest bırakma hataları için Zombie Objects seçeneğini kullanın. Kapanışları [weak self] ile düzeltin. Üretimde gerçek kullanıcıların belleğini izlemek için MetricKit kullanın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“Allocations ve Leaks Instruments” dersi ücretsiz mi?

Evet — “Allocations ve Leaks Instruments” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Allocations ve Leaks Instruments” dersinde ne öğreneceğim?

Öbek ayırmalarını izleyin, bellek sızıntılarını ve zombi nesnelerini bulun. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Allocations ve Leaks Instruments” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Instruments Temelleri: Zaman Profilleyicisi
  2. Allocations ve Leaks Instruments
  3. Ana İş Parçacığı Denetleyicisi ve Donmalar
  4. Yoğun Yolları İyileştirme: COW, Satır İçi Kullanım ve Özelleştirme
← Swift Academy Sayfasına Dön