Memory footprint
मेमोरी फुटप्रिंट मुख्य मेमोरी की मात्रा को संदर्भित करता है जो एक प्रोग्राम चलाते समय उपयोग करता है या संदर्भ देता है। पदचिह्न शब्द आम तौर पर किसी वस्तु के भौतिक आयामों की सीमा को संदर्भित करता है, जिससे उसके आकार का एहसास होता है। कम्प्यूटिंग में, एक सॉफ्टवेयर अनुप्रयोग का मेमोरी पदचिह्न इसकी रनटाइम मेमोरी आवश्यकताओं को इंगित करता है, जबकि प्रोग्राम निष्पादित होता है। इसमें सभी प्रकार के सक्रिय स्मृति क्षेत्र शामिल हैं जैसे कोड सेगमेंट जिसमें (ज्यादातर) प्रोग्राम निर्देश (और कभी-कभी स्थिरांक), डेटा सेगमेंट (आरंभ और शुरुआत दोनों), हीप मेमोरी, कॉल स्टैक, साथ ही किसी भी अतिरिक्त डेटा संरचना को रखने के लिए आवश्यक मेमोरी, जैसे कि सिंबल टेबल, डीबगिंग डेटा संरचनाएं, खुली फाइलें, वर्तमान प्रक्रिया के लिए मैप किए गए साझा पुस्तकालय, आदि, जो प्रोग्राम को निष्पादित करते समय कभी भी आवश्यक होते हैं और पूरे रन के दौरान कम से कम एक बार लोड किए जाएंगे। बड़े कार्यक्रमों में बड़ी स्मृति पदचिह्न होते हैं। एक अनुप्रयोग का स्मृति पदचिह्न मोटे तौर पर साझा पुस्तकालयों या उनके द्वारा लोड किए जाने वाले वर्गों की संख्या और आकार के अनुपात में होता है, जबकि स्थिर पुस्तकालय, निष्पादन योग्य कार्यक्रम और स्थिर डेटा क्षेत्र एक निश्चित (स्थिर) भाग में योगदान करते हैं। प्रोग्राम स्वयं अक्सर अपने स्वयं के स्मृति पदचिह्नों में सबसे बड़े हिस्से का योगदान नहीं करते हैं; बल्कि, रन-टाइम वातावरण द्वारा शुरू की गई संरचनाएं अधिकांश स्मृति लेती हैं। उदाहरण के लिए, एक सी + + संकलक वीटेबल्स, टाइप इंफो ऑब्जेक्ट्स और कई अस्थायी और अनाम ऑब्जेक्ट्स को सम्मिलित करता है जो एक प्रोग्राम के निष्पादन के दौरान सक्रिय होते हैं। जावा प्रोग्राम में, मेमोरी फुटप्रिंट मुख्य रूप से जावा वर्चुअल मशीन (जेवीएम) के रूप में रनटाइम वातावरण से बना होता है जो जावा एप्लिकेशन लॉन्च होने पर अप्रत्यक्ष रूप से लोड होता है। इसके अलावा, अधिकांश ऑपरेटिंग सिस्टम पर, एक एप्लिकेशन द्वारा खोली गई डिस्क फ़ाइलों को भी एप्लिकेशन के पता स्थान में पढ़ा जाता है, जिससे इसके पदचिह्न में योगदान होता है। उपयोग की प्रवृत्ति 1990 के दशक के दौरान, कंप्यूटर मेमोरी सस्ती हो गई और बड़ी मेमोरी फुटप्रिंट वाले प्रोग्राम आम हो गए। यह प्रवृत्ति ज्यादातर कंप्यूटर सॉफ्टवेयर के व्यापक उपयोग के कारण रही है, बड़े उद्यम-व्यापी अनुप्रयोगों से जो बड़ी मात्रा में स्मृति (जैसे डेटाबेस) का उपभोग करते हैं, स्मृति गहन मल्टीमीडिया संलेखन और संपादन सॉफ्टवेयर तक। लगातार बढ़ती स्मृति आवश्यकताओं से निपटने के लिए, आभासी स्मृति प्रणालियाँ शुरू की गईं जो उपलब्ध स्मृति को समान आकार के भागों में विभाजित करती हैं और उन्हें हार्ड-डिस्क पर संग्रहीत "पृष्ठों" से आवश्यकतानुसार लोड करती हैं। विशाल-स्मृति-पदचिह्न वाले कार्यक्रमों का समर्थन करने का यह दृष्टिकोण काफी सफल रहा है। माइक्रोसॉफ्ट विंडोज, एप्पल के मैकओएस और लिनक्स और यूनिक्स के सभी संस्करणों सहित अधिकांश आधुनिक ऑपरेटिंग सिस्टम वर्चुअल मेमोरी सिस्टम प्रदान करते हैं। एम्बेडेड प्रणालियों में परंपरागत रूप से, एम्बेडेड प्लेटफार्मों पर अनुप्रयोगों को चलाने के लिए कम-मेमोरी-फुटप्रिंट प्रोग्राम महत्वपूर्ण थे, जहां मेमोरी अक्सर एक सीमित संसाधन होती थी-इतना कि डेवलपर्स आमतौर पर केवल प्रोग्राम फुटप्रिंट को पर्याप्त छोटा बनाने के लिए दक्षता (प्रसंस्करण गति) का त्याग करते थे। उदाहरण के लिए, सन माइक्रोसिस्टम्स ने ऐसे सीमित उपकरणों के लिए अपनी जावा वर्चुअल मशीन (जेवीएम) का एक संस्करण निकाला; यह केवीएम के नाम से जाना जाता है। केवीएम उन प्लेटफार्मों पर काम करता है जहां मेमोरी किलोबाइट में होती है, जबकि मेगाबाइट (या यहां तक कि गीगाबाइट) मेमोरी नियमित घरेलू पीसी या अधिक आधुनिक स्मार्ट उपकरणों पर उपलब्ध होती है। अनुप्रयोग पदचिह्न आभासी स्मृति भी देखें, एक स्मृति प्रबंधन तकनीक जो कंप्यूटर डेटा भंडारण के विभिन्न रूपों (जैसे यादृच्छिक-अभिगम स्मृति और डिस्क भंडारण) को आभासी बनाती है। संदर्भ सॉफ्टवेयर अनुकूलन