উবুন্টুতে মেমরি লিক হয়ার একাধিক কারণ থাকতে পারে, কিন্তু सौভাগ্যবশত এটি ঘটলে সেটি সহজে বোঝা যায়। বাগি কোডই প্রায়শই সবচেয়ে বড় কারণ, কারণ প্রোগ্রামাররা কখনও কখনও চেক করতে পারেননি যে আর প্রয়োজন নেই এমন মেমরি রিলিজ হয়েছে কিনা। আপনি যদি অনস্টেবল প্যাকেজ ইনস্টল করেন বা সোর্স থেকে কোড কম্পাইল করেন, তবে এই কারণে আপনি মেমরি লিকের সম্মুখীন হতে পারেন। আপনি সম্ভবত এতে লক্ষ্য করবেন কারণ সফ্টওয়্যার অ্যাপ্লিকেশন প্যাকেজ আউট অফ মেমরি এরর দিতে শুরু করবে, যদিও আপনার पास যথেষ্ট ফিজিক্যাল RAM ইনস্টলড থাকে।
আপনি যদি মেমরি লিক নিয়ে চিন্তিত হন, তবে টার্মিনালে বারবার free টাইপ করার চেষ্টা করুন। আপনি যদি হঠাৎ দেখেন যে RAM ব্যবহার দ্রুত বেড়ছে, তবে আপনি ইতিমধ্যে একটি মেমরি লিক ডিটেক্ট করেছেন। আপনি যদি শুধু একটি টার্মিনাল বা এমনকি শুধু একটি ভার্চুয়াল কনসোল খোলা থাকা সত্ত্বেও bash: Not enough Memory এরর পান, তবে আপনি почти নিঃসন্দেহে একটি মেমরি লিকের সম্মুখীন হচ্ছেন। কিছু মেমরি লিক কিছুটা সুক্ষ্ম হতে পারে, কিন্তু উবুন্টু এবং এর বিভিন্ন স্পিন-অফস এমন টুলস এবং প্যাকেজ ফিচার করে যা এগুলো ডিটেক্ট করতে সাহায্য করে।
উবুন্টুতে মেমরি লিক ডিটেক্ট করা
যেহেতু মেমরি লিক ডিটেক্ট করার জন্য ব্যবহৃত টুলস głównie CLI প্রম্পট-ভিত্তিক, তাই আপনি উবুন্টুর কোন ভার্সন চালাচ্ছেন সেটি কোন ব্যাপার নয়। এগুলো রেগুলার উবুন্টুতে ইউনিটি টার্মিনালে, উবুন্টু সার্ভারে ভার্চুয়াল কনসোলে, লুবুন্টুতে lxterm-এ, কুবুন্টুতে কনসোলে বা এমনকি Xubuntu-তে Xfce-এ ভালোভাবে কাজ করবে। একটি সাধারণ টাস্ক যেমন sudo -s চেষ্টা করুন এবং আপনার পাসওয়ার্ড টাইপ করুন শুরু করার জন্য।
যদি সঠিকভাবে করা হয়, তবে এটি আপনাকে একটি রুট শেল দেবে, কিন্তু এটি মেমরি এরর করতে পারে যদি আপনি এমন একটি লিকের সাথে কাজ করছেন যা ইতিমধ্যে খুব দুরিয়ে গিয়েছে। আপনি যদি নিঃসন্দেহে একটি রুট শেল অ্যাক্সেস করতে পারেন, তবে echo 3 > /proc/sys/vm/drop_caches টাইপ করুন, এন্টার কী চাপুন এবং তারপর exit টাইপ করুন। আবার free বা free -m রান করে দেখুন এটা মেমরি রিলিজ করতে সাহায্য করেছে কিনা।
কিছু প্রোগ্রামার যুক্তি দেন যে কার্নেলকে ক্যাশ ড্রপ করতে ফোর্স করার কোন পয়েন্ট নেই, কারণ এগুলো ফ্লাশ হওয়া উচিত এবং অতিরিক্ত ফিজিক্যাল মেমরির প্রয়োজন হলে উনি রিক্লেইমড হওয়া উচিত। যাইহোক, এই ক্যাশগুলো ফোর্স ফ্লাশ করলে সিস্টেম পারফরম্যান্স আহত হবে, মনে রাখবেন এটি মাত্র একটি টেস্ট। একবার সিস্টেম রিবুট করলে, লিনাক্স কার্নেল আবার মেমরি ক্যাশগুলো তত्कालীনভাবে আকার দেবে।
কিছু লোক ने প্রস্তাব করা हे যে sync; sudo echo 3 > /proc/sys/vm/drop_caches লাইনটি একটি স্ক্রিপ্টে যোগ করা যাক যা ক্রন (cron) নিয়মিত রান করবে, কিন্তু এটি মেমরি ক্যাশিং-এর উদ্দেশ্য সত্যিকারি বাতিল করে দেয়। ফ্রি মেমরি নিজে বরং অনইউজড RAM, এবং এর মানে ডেটা ব 뒤에서র থেকে লোড হতে হবে। এই ডিভাইসগুলো কতটুকু ফাস্ট হোক না কেন, সেগুলো RAM-এর মতো ফাস্ট নয়, যার মানে আপনার মেমরি লিক ফিক্স করলেও, আপনি একবার আপনার ক্যাশ সিস্টেম অপ্টিমাল সেটিং-এ সেট করলে তার সাথে ছেড়া ছাড়ি করা উচিত নয়।
আপনি যদি সিদ্ধান্ত নেন যে আপনার पास একটি কনসিস্টেন্ট মেমরি লিক আছে যা মেশিন ব্যবহার করার সময় পেরিয়odik হয় এবং এটি স্পেসিফিক্যালি ন্যারো ডাউন করা যায় না, কিন্তু আপনার কাছে CLI অ্যাক্সেস আছে, তবে top কমান্ড রান করার চেষ্টা করুন। এটি আপনাকে রানিং প্রসেসের একটি তালিকা দেবে।
যদি উবুন্টু আপনাকে top-এর সম্পর্কে অস্বাভাবিক একটি এরর দেয়, তবে busybox top ইস্যু করার চেষ্টা করুন এই প্রোগ্রামের আরও সহজ ভার্সন অ্যাক্সেস করার জন্য। একবার তালিকা পেলে, %MEM বা অনুরূপ কলামে তাকিয়ে দেখুন কোন অ্যাপ্লিকেশনগুলোর সবচেয়ে বেশি মেমরি অ্যাসাইন করা আছে। আপনি PID নোট করে সঠিক PID নম্বরের সাথে kill কমান্ড ইস্যু করতে পারেন, কিন্তু এটি মাত্র অ্যাপ্লিকেশনটিকে বাধ্য করে বন্ধ করতে। তাদের ব্যবহৃত মেমরি আপনি এটি করার পরেও রিলিজ নাও হতে পারে, যদিও এটি অবশ্যই একটি চেষ্টায় যোগ্য।
আপনি যদি একটি অ্যাপ্লিকেশন খুঁজে পান যা বড় পরিমাণ মেমরি ব্যবহার করছে, তবে q চাপিয়ে কোয়িট করুন এবং তারপর kill #### চেষ্টা করুন আগের স্ক্রিন থেকে PID নম্বর দিয়ে। সিস্টেম প্রসেসগুলো এইভাবে কিল করা উচিত নয়, নর সেগুলো যাতে আপনার আনসেভড ওয়ার্ক থাকে। এটিকে Ctrl+Alt+Del টাস্ক লিস্টের সাথে খুব মিলتیে ভাবুন, যেটিও আপনি এই একই প্রসেসের জন্য ব্যবহার করতে পারেন।
আপনি একবার এমন একটি প্রোগ্রাম খুঁজে পেলে যেটির সাথে এটি কনসিস্টেন্টলি হচ্ছে, তবে আপনি ভবিষ্যতে এই আচরণটিকে প্রতিরোধ করার জন্য সেটিকে কনফিগার করতে পারেন। প্রতিটি אינডিভিজুয়াল প্রোগ্রাম অবশ্যই একটি ভিন্ন রিকোর্স চাইবে, যা মাত্র মেমরি লিক ডিটেক্ট করার টাস্কের বাইরে।
আপনি যদি মাত্র অ্যাপ্লিকেশন ট্রাবলশুট না করে বরং আসলে কোডের সাথে কাজ করছেন, তবে আপনার কাছে আরও কিছু রিকোর্স আছে। উবুন্টু এবং এর ডেরিভেটিভস আপনাকে membarrier, memusage এবং memusagestat C রুটিন প্রোগ্রামিংয়ের জন্য অফার করে।
স্পষ্টভাবে man membarrier, man memusage বা man memusagestat ব্যবহার করুন এই গুরুত্বপূর্ণ রুটিনগুলোর লিনাক্স প্রোগ্রামার্স ম্যানুয়াল পেজ देखने के लिए। ভবিষ্যতে লাইব্রেরির নতুন ভার্সন আসলে উবুন্টুর নতুন ভার্সন আসলে, পরিবর্তনগুলো সবসময় এখানে আউटलাইন করা থাকবে।
আপনি যদি গ্রাফিক্যাল কন্টেন্ট চান, তবে memusagestat PNG ফাইলে মেমরি ব্যবহারের একটি গ্রাফিক্যাল রিপ্রেজেন্টেশন সেভ করার অপশনও দেয়। এটি ইউটিলিটির লেখকদের জন্য একটি আকর্ষণীয় ফিচার, কারণ এটি এমন অ্যাপ্লিকেশন তৈরি করতে ব্যবহার করা যায় যা নিয়মিত মেমরি লিক চেক করে।
আপনি memprof ইনস্টল করতে চাইতে পারেন, যা মেমরি ব্যবহার প্রোফাইল করার একটি টুল মেমরি লিক খুঁজে বের করতে সাহায্য করার জন্য। এটি একটি প্রোগ্রামের প্রতিটি ফাংশন কতটুকু মেমরি অ্যালোকেট করে সেটি রিগার্ডিং একটি প্রোফাইল জেনারেট করে। এটি বিদ্যমান মেমরিও স্ক্যান করতে পারে সেই ব্লকগুলো খুঁজে বের করতে যেগুলো অ্যালোকেটেড কিন্তু এখন কোনো জেনুইন রেফারেন্স ফিচার করে না। এটি স্ট্যান্ডার্ড C লাইব্রেরির মেমরি অ্যালোকেশন ফিচারগুলো ওভাররাইড করার জন্য একটি লাইব্রেরি প্রি-লোড করে এটি করে।
আপনি যদি এটি ব্যবহার করার পরিকল্পনা করেন, তবে আপনার কোডের শুরুতে include memprof লাইনটি রিলিজ করার আগে রিমুভ করে দিতে ভুলবেন না। এটি নিশ্চিত করতে ব্যবহৃত হয় যে আপনার কোনো লিক নেই, কিন্তু এটি আপনার কোড প্যাকেজ করে রিপোজিটরিতে রিলিজ করলে একটি ডিপেন্ডেন্সি नहीं হওয়া উচিত।
লেখক সম্পর্কে

কেভিন অ্যারোজ
কেভিন অ্যারোজ একজন অত্যন্ত অভিজ্ঞ এবং জ্ঞানী প্রযুক্তি বিশেষজ্ঞ যিনি এক দশকের বেশি ইন্ডাস্ট্রি অভিজ্ঞতা রাখেন। তিনি মাইক্রোসফ্ট সার্টিফাইড টেকনোলজি স্পেশালিস্ট (MCTS) সার্টিফিকেশন ধারণ করেন এবং সর্বশেষ প্রযুক্তি উন্নতির সাথে আপ-টু-ডেট থাকতে গভীর আগ্রহ রাখেন। কেভিন প্রযুক্তি-সম্পর্কিত وسیম শ্রেণির বিষয়ে ব্যাপকভাবে লিখেছেন, যা সফ্টওয়্যার ডেভেলপমেন্ট, সাইবার সিকিউরিটি এবং ক্লাউড কম্পিউটিং এর মতো ক্ষেত্রে তার দক্ষতা এবং জ্ঞানের প্রদর্শন করে। প্রযুক্তি ক্ষেত্রে তার অবদানকে তার সমকক্ষরা ব্যাপকভাবে স্বীকৃতি ও সম্মান দিয়েছে, এবং জটিল প্রযুক্তিগত ধারণাগুলো স্পষ্ট ও সংক্ষিপ্তভাবে ব্যাখ্যা করার ক্ষমতার জন্য তিনি অত্যন্ত সম্মানিত।