यह पैटर्न किसी leak या बेलगाम बढ़त की तरफ इशारा करता है। DevTools में एक ही यूज़र flow के बाद दो जगहों पर heap snapshots लें, retained sizes की तुलना करें और देखें कि detached DOM nodes को कौन पकड़े हुए है। आम वजहें हैं ऐसे listeners और subscriptions जो कभी हटते नहीं, unmount के बाद भी चलते timers, ऐसे caches जो कभी खाली नहीं होते, और बड़े objects पकड़ने वाले closures। इलाज यह है कि component ने जो भी बनाया उसे हटाया जाए।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर अंदाज़ा लगाने वाला नहीं, तरीकेवार डिबगर चाहता है। memory की दिक्कतें सिर्फ कोड पढ़कर ठीक नहीं होतीं, तो वे जांच रहे हैं कि आपको टूलिंग पता है: heap snapshots, allocation timelines, detached nodes और performance monitor। यह lifecycle का अनुशासन भी टटोलता है, क्योंकि single page apps में ज़्यादातर leaks उसी से आती हैं जो mount पर बनाया गया और जिसकी कोई सफाई नहीं है।
अपना जवाब कैसे स्ट्रक्चर करें
- अंदाज़े से नहीं, memory की माप से लक्षण की पुष्टि करें।
- दोहराए गए flow पर तीन snapshot की तुलना बताएं।
- कोड में आप जिन आम अपराधियों को देखते हैं, वे गिनाएं।
- इलाज का पैटर्न समझाएं: हर subscription का एक teardown।
उदाहरण जवाब
पहले मैं पक्का करूंगा कि मामला memory का ही है, कुछ और नहीं, तो मैं performance monitor खुला रखकर वही flow दोहराऊंगा जो यूज़र बताते हैं, और heap तथा listener और node की गिनती देखूंगा। अगर वे चढ़ते जाएं और forced collection के बाद भी नीचे न आएं, तो यह leak है। फिर मैं एक heap snapshot लेता हूं, flow दस बार चलाता हूं, दूसरा लेता हूं, और retained size से तुलना करता हूं। detached DOM nodes ही असली सुराग हैं, और retainer path बता देता है कि उन्हें कौन पकड़े हुए है। व्यवहार में यह लगभग हमेशा कुछ ऐसा होता है जो बिना मेल खाती सफाई के बनाया गया: window पर resize या scroll listener, कोई socket subscription, कोई interval, या ऐसा observer जो component से ज़्यादा जीता है। मुझे एक ऐसा मामला मिला जहां किसी chart library ने हर render पर listener जोड़ा और unmount पर सिर्फ एक हटाया, तो हर navigation के साथ गिनती बढ़ती गई। इलाज का पैटर्न उबाऊ पर कारगर है: जो कुछ effect में बनता है वह अपनी cleanup लौटाता है, और हर cache को हमेशा बढ़ते रहने की जगह एक आकार की सीमा मिलती है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- detached DOM node क्या है और उसे कौन पकड़े है यह कैसे ढूंढते हैं?
- code review में इस श्रेणी के bug को कैसे रोकेंगे?
- leak और सिर्फ बड़े cache में फर्क कैसे करते हैं?
फ्रंटएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें