Instruments för allokeringar och läckor
Spåra heap-allokeringar och hitta minnesläckor och zombieobjekt.
Instruments för allokeringar och läckor är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.
Allocations-instrumentet
Allocations-instrumentet spårar varje heap-allokering och frigöring och visar hur minnet växer över tid.
// Instruments → Allocations template
// Shows live bytes, allocation count, and transient objectsAnalysera heap-tillväxt
Använd appen och håll uppsikt över diagrammet Live Bytes. En stadig tillväxt utan avplaning tyder på en minnesläcka.
// Normal: allocations rise and fall as views appear/disappear
// Leak: allocations only grow, never releasedGenerationsanalys
Markera en generationsögonblicksbild före och efter ett användarflöde för att se vilka objekt som oväntat fanns kvar.
// 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 releasedLeaks-instrumentet
Leaks-instrumentet genomsöker heapen regelbundet och identifierar objekt som är allokerade men inte nåbara (retain-cykler).
// Run Leaks alongside Allocations in the "Leaks" template
// Red bars in the timeline = leaked objects detected
// Click a bar to see the leaked object graphLäsa läckagegrafen
Läckagegrafen visar vilka objekt som håller kvar varandra i en cykel och pekar ut roten till retain-cykeln.
// Example cycle:
// ViewController → ViewModel → Closure → ViewController
// Instruments draws the reference edges visuallyIdentifiera retain-cykler i closures
Den vanligaste läckan uppstår när en closure fångar self starkt samtidigt som self håller kvar closuren.
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-instrumentet
VM Tracker visar virtuella minnesregioner och smutsiga sidor. Högt smutsigt minne får iOS att avsluta appen.
// Instruments → "VM Tracker" in allocation instrument
// Look for: large __DATA dirty pages, high CG raster memoryZombie-objekt
Aktivera Zombie Objects i Instruments för att upptäcka överfrigjorda objekt — de omvandlas till "zombies" som loggar när de används.
// Instruments → Edit → Record Settings → Enable Zombie Objects
// Accessing a zombie prints: "*** -[MyObject method] sent to deallocated instance"Heap-bilder
Jämför två heap-tillstånd med "Heap Shot" för att hitta objekt som finns kvar mellan bilderna — utmärkt för att upptäcka läckor i view controllers.
// After navigating to and from a screen twice:
// Heap should return to baseline
// Objects remaining in the diff = leaked view controllers or modelsMetricKit för minne i produktion
Använd MXMetricPayload för att samla in minnes- och prestandadata från verkliga användare i produktion.
import MetricKit
class AppDelegate: UIApplicationDelegate, MXMetricManagerSubscriber {
func didReceive(_ payloads: [MXMetricPayload]) {
payloads.forEach { print($0.memoryMetrics as Any) }
}
}Snabb kontroll
Vad tyder ett stadigt växande diagram över "Live Bytes" på i Allocations-instrumentet?
Sammanfattning av lektionen
Använd Allocations för att spåra heap-tillväxt och generationsögonblicksbilder. Använd Leaks för att upptäcka retain-cykler och visa objektgrafen. Använd Zombie Objects för fel med överfrigöring. Åtgärda closures med [weak self]. Använd MetricKit för att spåra minne hos verkliga användare i produktion.
Lär dig Swift med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 122
- Lektioner
- 409
Vanliga frågor
Är lektionen ”Instruments för allokeringar och läckor” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Instruments för allokeringar och läckor”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Instruments för allokeringar och läckor”?
Spåra heap-allokeringar och hitta minnesläckor och zombieobjekt. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Swift Academy?
Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Instruments för allokeringar och läckor”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Swift Academy-lektionen?
Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Grunderna i Instruments: Time Profiler
- Instruments för allokeringar och läckor
- Main Thread Checker och hängningar
- Optimera heta kodvägar: COW, inlining och specialisering