Allocations और Leaks Instruments
हीप आवंटनों को ट्रैक करें तथा मेमोरी लीक और ज़ॉम्बी ऑब्जेक्ट खोजें।
Allocations और Leaks Instruments, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Allocations इंस्ट्रूमेंट
Allocations इंस्ट्रूमेंट हर हीप आवंटन और विमोचन को ट्रैक करता है तथा समय के साथ मेमोरी वृद्धि दिखाता है।
// Instruments → Allocations template
// Shows live bytes, allocation count, and transient objectsहीप वृद्धि का विश्लेषण
अपने ऐप का उपयोग करें और Live Bytes ग्राफ़ देखें। बिना स्थिर हुए लगातार बढ़ना मेमोरी लीक का संकेत है।
// Normal: allocations rise and fall as views appear/disappear
// Leak: allocations only grow, never releasedजनरेशन विश्लेषण
किसी उपयोगकर्ता प्रवाह से पहले और बाद में जनरेशन स्नैपशॉट चिह्नित करें, ताकि पता चल सके कि कौन-से ऑब्जेक्ट अनपेक्षित रूप से बने रहे।
// 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 इंस्ट्रूमेंट
Leaks इंस्ट्रूमेंट समय-समय पर हीप को स्कैन करता है और ऐसे ऑब्जेक्ट की पहचान करता है जिन्हें आवंटित तो किया गया है, लेकिन उन तक पहुँचा नहीं जा सकता (रिटेन चक्र)।
// 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लीक ग्राफ़ पढ़ना
लीक ऑब्जेक्ट ग्राफ़ दिखाता है कि कौन-से ऑब्जेक्ट चक्र में एक-दूसरे को बनाए रखते हैं और रिटेन चक्र के मूल बिंदु की पहचान करता है।
// Example cycle:
// ViewController → ViewModel → Closure → ViewController
// Instruments draws the reference edges visuallyक्लोज़र में रिटेन चक्र पहचानना
सबसे आम लीक यह है: कोई क्लोज़र self को मज़बूती से कैप्चर करता है, जबकि self उस क्लोज़र को बनाए रखता है।
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 इंस्ट्रूमेंट
VM Tracker वर्चुअल मेमोरी क्षेत्रों और गंदे पृष्ठों को दिखाता है। अधिक गंदे मेमोरी दबाव के कारण iOS आपका ऐप बंद कर सकता है।
// Instruments → "VM Tracker" in allocation instrument
// Look for: large __DATA dirty pages, high CG raster memoryज़ॉम्बी ऑब्जेक्ट
अधिक-रिलीज़ किए गए ऑब्जेक्ट पकड़ने के लिए Instruments में Zombie Objects सक्षम करें — उन्हें “ज़ॉम्बी” में बदल दिया जाता है, जो एक्सेस किए जाने पर लॉग दर्ज करते हैं।
// Instruments → Edit → Record Settings → Enable Zombie Objects
// Accessing a zombie prints: "*** -[MyObject method] sent to deallocated instance"हीप शॉट
दो हीप स्थितियों की तुलना “Heap Shot” से करें, ताकि उन ऑब्जेक्ट को खोज सकें जो दोनों शॉट के बीच बने रहते हैं — व्यू कंट्रोलर लीक का पता लगाने के लिए यह बहुत उपयोगी है।
// After navigating to and from a screen twice:
// Heap should return to baseline
// Objects remaining in the diff = leaked view controllers or modelsप्रोडक्शन मेमोरी के लिए MetricKit
प्रोडक्शन में वास्तविक उपयोगकर्ताओं से मेमोरी और प्रदर्शन डेटा एकत्र करने के लिए MXMetricPayload का उपयोग करें।
import MetricKit
class AppDelegate: UIApplicationDelegate, MXMetricManagerSubscriber {
func didReceive(_ payloads: [MXMetricPayload]) {
payloads.forEach { print($0.memoryMetrics as Any) }
}
}त्वरित जाँच
Allocations इंस्ट्रूमेंट में लगातार बढ़ता हुआ “Live Bytes” ग्राफ़ क्या दर्शाता है?
पाठ का पुनरावलोकन
हीप वृद्धि और जनरेशन स्नैपशॉट ट्रैक करने के लिए Allocations का उपयोग करें। रिटेन चक्र का पता लगाने और ऑब्जेक्ट ग्राफ़ देखने के लिए Leaks का उपयोग करें। अधिक-रिलीज़ संबंधी बग के लिए Zombie Objects का उपयोग करें। [weak self] से क्लोज़र ठीक करें। प्रोडक्शन में वास्तविक उपयोगकर्ताओं की मेमोरी ट्रैक करने के लिए MetricKit का उपयोग करें।
एआई शिक्षक के साथ Swift सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 122
- पाठ
- 409
अक्सर पूछे जाने वाले प्रश्न
क्या “Allocations और Leaks Instruments” पाठ निःशुल्क है?
हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Allocations और Leaks Instruments” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Allocations और Leaks Instruments” में मैं क्या सीखूँगा?
हीप आवंटनों को ट्रैक करें तथा मेमोरी लीक और ज़ॉम्बी ऑब्जेक्ट खोजें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Allocations और Leaks Instruments” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Instruments की मूल बातें: Time Profiler
- Allocations और Leaks Instruments
- Main Thread Checker और हैंग
- हॉट पाथ का अनुकूलन: COW, Inlining और Specialisation