যে কোনও সময় আপনার কাছে এমন কোনও অ্যাপ্লিকেশন রয়েছে যাতে পারফরম্যান্স-নিবিড় সমালোচনামূলক পথ রয়েছে, আপনি কীভাবে স্মৃতিচারণ করবেন তা নিয়ে আপনার চিন্তিত হওয়া উচিত। বেশিরভাগ শেষ-ব্যবহারকারী ক্লায়েন্ট-সাইড অ্যাপ্লিকেশনগুলি এই বিভাগে আসে না কারণ তারা প্রাথমিক ইভেন্ট-চালিত এবং বেশিরভাগ ইভেন্টগুলি ব্যবহারকারীর সাথে মিথস্ক্রিয়া থেকে আসে এবং এতে অনেকগুলি (যদি কোনও হয় তবে) পারফরম্যান্স বাধা নেই।
যাইহোক, অনেকগুলি ব্যাক-এন্ড সফ্টওয়্যারটির মেমরিটি কীভাবে পরিচালিত হয় সে সম্পর্কে কিছুটা ফোকাস করা উচিত কারণ সেই সফ্টওয়্যারটি অনেক বেশি ক্লায়েন্টের সংখ্যক, বৃহত্তর সংখ্যক লেনদেন, আরও ডেটা উত্সগুলি পরিচালনা করতে স্কেল করতে পারে .... একবার আপনি শুরু করলে সীমাবদ্ধতার দিকে ঠেলে, আপনি কোনও সফ্টওয়্যার ব্যবহারকারীদের কীভাবে মেমরি মেমরি করবেন এবং কোনও সম্পূর্ণ কল্পনাযোগ্য ব্যবহারের ক্ষেত্রে পরিচালনা করার জন্য রচিত একটি সম্পূর্ণ জেনেরিক মেমরির বরাদ্দকারীকে নির্ভর করার পরিবর্তে আপনার সফ্টওয়্যারটি অনুসারে কাস্টম বরাদ্দকরণ স্কিমগুলি কীভাবে লিখতে পারেন তা বিশ্লেষণ শুরু করতে পারেন।
আপনাকে কয়েকটি উদাহরণ দেওয়ার জন্য ... আমার প্রথম সংস্থায় আমি একটি orতিহাসিক প্যাকেজ, প্রসেস কন্ট্রোল ডেটা সংগ্রহ / সংরক্ষণ / সংরক্ষণের জন্য দায়ী সফ্টওয়্যার (একটি কারখানা, পারমাণবিক বিদ্যুৎকেন্দ্র বা 10 মিলিয়ন সেন্সর সহ তেল শোধনাগার সম্পর্কে চিন্তাভাবনা) নিয়ে কাজ করেছি, আমরা সেই ডেটা সংরক্ষণ করব)। যে কোনও সময় আমরা কোনও পারফরম্যান্স বাধা বিশ্লেষণ করেছি যা ইতিহাসবিদকে আরও ডেটা প্রক্রিয়াজাতকরণ থেকে বিরত করেছিল, বেশিরভাগ সময় সমস্যাটি ছিল স্মৃতিটি কীভাবে পরিচালনা করা হয়েছিল। আমরা একেবারে প্রয়োজনীয় না হলে ম্যালোক / ফ্রি কল না করা হয়েছে তা নিশ্চিত করার জন্য আমরা অনেক সময় পেরিয়েছি।
আমার বর্তমান চাকরিতে, আমি নজরদারি ভিডিও ডিজিটাল রেকর্ডার এবং বিশ্লেষণ প্যাকেজটিতে কাজ করি। 30 fps এ, প্রতিটি চ্যানেল প্রতি 33 মিলিসেকেন্ডে একটি ভিডিও ফ্রেম গ্রহণ করে। আমরা যে হার্ডওয়্যার বিক্রি করি তাতে আমরা সহজেই 100 টি চ্যানেল ভিডিও রেকর্ড করতে পারি। সুতরাং এটি সমালোচনামূলক পথে (নেটওয়ার্ক কল => ক্যাপচার উপাদানগুলি => রেকর্ডার পরিচালন সফ্টওয়্যার => স্টোরেজ উপাদানগুলি => ডিস্ক) কোনও গতিশীল মেমরি বরাদ্দ নেই তা নিশ্চিত করার জন্য এটি আর একটি ক্ষেত্রে। আমাদের কাছে একটি কাস্টম ফ্রেম বরাদ্দকারী রয়েছে, এতে বাফারের স্থির আকারের বালতি রয়েছে এবং পূর্বে বরাদ্দ করা বাফারগুলি পুনরায় ব্যবহার করতে LIFO ব্যবহার করে। আপনার যদি K০০ কেবি স্টোরেজ দরকার হয় তবে আপনার স্থানটি 1024 কেবি বাফারের সাথে শেষ হতে পারে, যা স্থান নষ্ট করে তবে এটি আমাদের ব্যবহারের জন্য বিশেষভাবে তৈরি করা হয়েছে যেখানে প্রতিটি বরাদ্দ খুব অল্প সময়ের জন্য, এটি খুব ভালভাবে কার্যকর হয় কারণ বাফারটি ব্যবহৃত হয়,
আমি বর্ণিত অ্যাপ্লিকেশনগুলির ধরণের (এ থেকে বি তে প্রচুর ডেটা সরিয়ে নেওয়া এবং ক্লায়েন্টের অনুরোধগুলির একটি বিশাল সংখ্যক হ্যান্ডলিং) হিপ এবং পিছনে যাওয়া সিপিইউ কার্যকারিতা বাধাগুলির একটি প্রধান উত্স। হিপ বিভাজনকে সর্বনিম্ন রাখা একটি গৌণ সুবিধা, তবে যতদূর আমি বলতে পারি বেশিরভাগ আধুনিক ওএস ইতিমধ্যে স্বল্প-খণ্ডিত হিপগুলি বাস্তবায়িত করে (কমপক্ষে আমি জানি উইন্ডোজ এটি করে, এবং আমি আশা করি অন্যরাও এটি করবে)। ব্যক্তিগতভাবে, 12+ বছরগুলিতে এই ধরণের পরিবেশে কাজ করার সময় আমি সিপিইউয়ের ব্যবহারের সমস্যাগুলি হিপ সম্পর্কিত বেশিরভাগ ক্ষেত্রেই দেখেছি, যদিও আমি কখনও কখনও এমন কোনও সিস্টেম দেখিনি যা বাস্তবে খণ্ডিত apালুতে ভুগেছে।