Memory footprint
মেমরি ফুটপ্রিন্ট বলতে কোনও প্রোগ্রাম চালানোর সময় যে পরিমাণ প্রধান মেমরি ব্যবহার করে বা উল্লেখ করে তা বোঝায়। পদচিহ্ন শব্দটি সাধারণত কোনও বস্তুর ভৌত মাত্রার পরিমাণকে বোঝায়, যা তার আকারের একটি ধারণা দেয়। কম্পিউটিংয়ে, একটি সফ্টওয়্যার অ্যাপ্লিকেশনের মেমরি পদচিহ্ন তার রানটাইম মেমরির প্রয়োজনীয়তা নির্দেশ করে, যখন প্রোগ্রামটি কার্যকর হয়। এর মধ্যে রয়েছে সমস্ত ধরনের সক্রিয় মেমরি অঞ্চল যেমন কোড সেগমেন্ট (বেশিরভাগ) প্রোগ্রাম নির্দেশাবলী (এবং মাঝে মাঝে ধ্রুবক), ডেটা সেগমেন্ট (প্রারম্ভিক এবং অনির্দিষ্ট উভয়), হিপ মেমরি, কল স্ট্যাক, এবং যে কোনও অতিরিক্ত ডেটা স্ট্রাকচার ধরে রাখার জন্য প্রয়োজনীয় মেমরি, যেমন সিম্বোল টেবিল, ডিবাগিং ডেটা স্ট্রাকচার, ওপেন ফাইল, বর্তমান প্রক্রিয়ার সাথে ম্যাপ করা ভাগ করা লাইব্রেরি ইত্যাদি, যা প্রোগ্রামটি কার্যকর করার সময় প্রয়োজন হয় এবং পুরো রান চলাকালীন কমপক্ষে একবার লোড করা হবে। বড় প্রোগ্রামগুলির আরও বড় মেমরি পদচিহ্ন থাকে। একটি অ্যাপ্লিকেশনের মেমরি পদচিহ্ন মোটামুটিভাবে ভাগ করা লাইব্রেরি বা এটি লোড করা ক্লাসের সংখ্যা এবং আকারের সাথে আনুপাতিক, যেখানে স্ট্যাটিক লাইব্রেরি, এক্সিকিউটেবল প্রোগ্রাম এবং স্ট্যাটিক ডেটা এরিয়া একটি নির্দিষ্ট (ধ্রুবক) অংশে অবদান রাখে। প্রোগ্রামগুলি প্রায়শই তাদের নিজস্ব স্মৃতির পদচিহ্নের বৃহত্তম অংশে অবদান রাখে না; বরং, রান-টাইম পরিবেশ দ্বারা প্রবর্তিত কাঠামো বেশিরভাগ স্মৃতি গ্রহণ করে। উদাহরণস্বরূপ, একটি সি + + সংকলক vtables, টাইপ তথ্য বস্তু এবং অনেক অস্থায়ী এবং বেনামী বস্তু সন্নিবেশ করে যা একটি প্রোগ্রামের সম্পাদনের সময় সক্রিয় থাকে। একটি জাভা প্রোগ্রামে, মেমরি পদচিহ্ন মূলত জাভা ভার্চ্যুয়াল মেশিন (জেভিএম) আকারে রানটাইম পরিবেশ নিয়ে গঠিত যা একটি জাভা অ্যাপ্লিকেশন চালু করার সময় পরোক্ষভাবে লোড করা হয়। উপরন্তু, বেশিরভাগ অপারেটিং সিস্টেমে, একটি অ্যাপ্লিকেশন দ্বারা খোলা ডিস্ক ফাইলগুলিও অ্যাপ্লিকেশনটির ঠিকানা স্থানে পড়া হয়, যার ফলে এর পদচিহ্ন অবদান রাখে। ব্যবহারের প্রবণতা 1990-এর দশকে, কম্পিউটার মেমরি সস্তা হয়ে ওঠে এবং বৃহত্তর মেমরি পদচিহ্ন সহ প্রোগ্রামগুলি সাধারণ হয়ে ওঠে। এই প্রবণতা বেশিরভাগই কম্পিউটার সফ্টওয়্যারের ব্যাপক ব্যবহারের কারণে হয়েছে, বড় এন্টারপ্রাইজ-ব্যাপী অ্যাপ্লিকেশনগুলি যা প্রচুর পরিমাণে মেমরি ব্যবহার করে (যেমন ডেটাবেস) থেকে মেমরি নিবিড় মাল্টিমিডিয়া রচনা এবং সম্পাদনা সফ্টওয়্যার পর্যন্ত। ক্রমবর্ধমান স্মৃতির চাহিদা মেটাতে, ভার্চুয়াল মেমরি সিস্টেম চালু করা হয়েছিল যা উপলব্ধ স্মৃতিকে সমান আকারের অংশে বিভক্ত করে এবং যখন-যখন প্রয়োজন হয় তখন হার্ড-ডিস্কে সঞ্চিত "পৃষ্ঠাগুলি" থেকে লোড করে। বিশাল-স্মৃতি-পদচিহ্ন সহ প্রোগ্রামগুলিকে সমর্থন করার এই পদ্ধতিটি বেশ সফল হয়েছে। মাইক্রোসফ্ট উইন্ডোজ, অ্যাপলের ম্যাকোস এবং লিনাক্স ও ইউনিক্সের সমস্ত সংস্করণ সহ বেশিরভাগ আধুনিক অপারেটিং সিস্টেম ভার্চুয়াল মেমরি সিস্টেম সরবরাহ করে। এমবেডেড সিস্টেমে ঐতিহ্যগতভাবে, লো-মেমোরি-ফুটপ্রিন্ট প্রোগ্রামগুলি এমবেডেড প্ল্যাটফর্মগুলিতে অ্যাপ্লিকেশন চালানোর জন্য গুরুত্বপূর্ণ ছিল যেখানে মেমরি প্রায়শই একটি সীমাবদ্ধ সম্পদ হত-এতটাই যে ডেভেলপাররা সাধারণত প্রোগ্রামের পায়ের ছাপগুলি যথেষ্ট ছোট করার জন্য দক্ষতা (প্রক্রিয়াকরণের গতি) ত্যাগ করে উপলব্ধ র্যামের সাথে খাপ খায়। উদাহরণস্বরূপ, সান মাইক্রোসিস্টেমস এই ধরনের সীমাবদ্ধ ডিভাইসের জন্য তার জাভা ভার্চ্যুয়াল মেশিনের (জেভিএম) একটি সংস্করণ নিয়ে এসেছে; এটি কেভিএম নামে যায়। নিয়মিত হোম পিসি বা আরও আধুনিক স্মার্ট ডিভাইসে উপলব্ধ মেগাবাইট (এমনকি গিগাবাইট) মেমরির বিপরীতে কেভিএম এমন প্ল্যাটফর্মগুলিতে কাজ করে যেখানে মেমরি কিলোবাইটে থাকে। আরও দেখুন অ্যাপ্লিকেশন ফুটপ্রিন্ট ভার্চ্যুয়াল মেমরি, একটি মেমরি ম্যানেজমেন্ট কৌশল যা কম্পিউটার ডেটা স্টোরেজের বিভিন্ন রূপকে (যেমন র্যান্ডম-অ্যাক্সেস মেমরি এবং ডিস্ক স্টোরেজ) ভার্চ্যুয়ালাইজ করে। রেফারেন্স সফ্টওয়্যার অপ্টিমাইজেশন