जावास्क्रिप्ट ऑब्जेक्ट के मेमोरी फ़ुटप्रिंट का निर्धारण
जावास्क्रिप्ट में, प्रदर्शन को अनुकूलित करने और मेमोरी लीक से बचने के लिए ऑब्जेक्ट की मेमोरी खपत को समझना महत्वपूर्ण है। यह आलेख एक जावास्क्रिप्ट ऑब्जेक्ट के आकार को प्राप्त करने की क्वेरी को संबोधित करता है, एक ऐसे समाधान पर विचार करता है जो ऐसी वस्तुओं द्वारा कब्जा की गई अनुमानित मेमोरी का अनुमान लगाता है।
ऑब्जेक्ट का आकार निर्धारित करना
में जावास्क्रिप्ट, किसी वस्तु के आकार को निर्धारित करने के लिए विशेष रूप से डिज़ाइन किया गया कोई अंतर्निहित फ़ंक्शन नहीं है। हालाँकि, एक सामान्य तकनीक में ऑब्जेक्ट के गुणों के माध्यम से पुनरावृत्ति करना और प्रत्येक आदिम मूल्य और ऑब्जेक्ट संदर्भ के आकार की गणना करना शामिल है। यह अनुमान डेटा प्रकारों के आकार पर विचार करता है, जैसे बूलियन (4 बाइट्स), स्ट्रिंग (लंबाई * 2 बाइट्स), और संख्या (8 बाइट्स)।
एक ऑब्जेक्ट आकार अनुमानक को लागू करना
किसी दिए गए ऑब्जेक्ट के आकार का अनुमान लगाने के लिए, एक पुनरावर्ती फ़ंक्शन नियोजित किया जा सकता है:
function roughSizeOfObject(object) { const objectList = []; const stack = [object]; let bytes = 0; while (stack.length) { const value = stack.pop(); switch (typeof value) { case 'boolean': bytes = 4; break; case 'string': bytes = value.length * 2; break; case 'number': bytes = 8; break; case 'object': if (!objectList.includes(value)) { objectList.push(value); for (const prop in value) { if (value.hasOwnProperty(prop)) { stack.push(value[prop]); } } } break; } } return bytes; }
उदाहरण
प्रदान किए गए उदाहरण का उपयोग करना:
function Marks() { this.maxMarks = 100; } function Student() { this.firstName = "firstName"; this.lastName = "lastName"; this.marks = new Marks(); } const stud = new Student(); const sizeInBytes = roughSizeOfObject(stud); console.log(`Object size: ${sizeInBytes} bytes`);
इस परिदृश्य में, रफसाइजऑफऑब्जेक्ट फ़ंक्शन स्टड ऑब्जेक्ट की अनुमानित मेमोरी खपत का अनुमान लगाता है, जिसमें इसके गुण और नेस्टेड ऑब्जेक्ट शामिल हैं।
सीमाएं
यह ध्यान रखना महत्वपूर्ण है कि यह तकनीक एक अनुमान प्रदान करती है और नहीं भी ऑब्जेक्ट से संबंधित सभी मेमोरी आवंटन का हिसाब रखें। इसके अतिरिक्त, ऑब्जेक्ट संदर्भ और क्लोजर से जुड़ा ओवरहेड आकार को सटीक रूप से निर्धारित करने में अतिरिक्त जटिलता पेश कर सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3