মেমরি লিক (Memory Leak) হলো কম্পিউটার প্রোগ্রামে ফল্টি মেমরি এলোকেশনের কারণে রিসোর্স মিসপ্লেসমেন্ট। এটি ঘটে যখন ব্যবহার না হওয়া একটি RAM লোকেশন রিলিজ না হয়ে থাকে। মেমরি লিককে স্পেস লিকের সাথে গুলিয়ে ফেলা যাবে না, যা একটি প্রোগ্রাম প্রয়োজনীয়তর RAM ব্যবহার করাকে বোঝায়। উইন্ডোজ ১১/১০/৮/৭ সিস্টেমে মেমরি লিক বলতে হয় যখন মেমরি ব্যবহার না হওয়া সত্ত্বেও অ্যাক্সেসযোগ্য নয়।
উইন্ডোজ ১১/১০-এ মেমরি লিক
শুরু করার আগে জানা উচিত যে মেমরি লিক একটি সফটওয়্যার ইস্যু যা ডিবাগ করতে হয়—যেমন Java, JavaScript, C/C++, উইন্ডোজ ইত্যাদিতে। ফিজিক্যালি RAM বা হার্ড ডিস্ক রিপ্লেস করার প্রয়োজন নেই।

এটি কেন খারাপ
মেমরি লিক খারাপ কারণ এটি একটি বাগ, সিস্টেমের একটি ত্রুটি। কিন্তু একটু গভীরে জানি কীভাবে এটি সিস্টেমকে প্রভাবিত করে:
- মেমরি ব্যবহার না হওয়া সত্ত্বেও ফ্রি না হওয়ায় মেমরি ডিপ্লিশন হয়।
- মেমরি এক্সহাস্ট হওয়ায় সফটওয়্যার এজিং হয়।
- উপলব্ধ মেমরি কমে যাওয়ায় সিস্টেমের রেসপন্স টাইম বাড়ে এবং পারফরম্যান্স খারাপ হয়।
- অনচেকড মেমরি লিক இற/pkg একটি অ্যাপ্লিকেশন ক্র্যাশের দিকে পরিচালিত করতে পারে।
একটি প্রোগ্রামারের কাছে প্রোগ্রামের সোর্স কোড অ্যাক্সেস থাকলে মেমরি লিক চিহ্নিত করা সম্ভব।
লিক লোকেট করা
একটি সমস্যা সমাধান করতে হলে সেটি আগে চিহ্নিত করতে হয়। মেমরি লিক লোকেট করার বেসিক ধাপগুলো:
- Affirmation (নিশ্চিতকরণ): লিক হয়েছে কিনা তা নির্ধারণ করা।
- Kernel-mode memory leak খুঁজে বের করা: কের্নেল-মোড ড্রাইভার কম্পোনেন্টের দ্বারা সৃষ্ট লিক লোকেট করা।
- User-mode memory leak খুঁজে বের করা: ইউজার-মোড ড্রাইভার বা অ্যাপের দ্বারা সৃষ্ট লিক লোকেট করা।
মেমরি এলোকেশন
অ্যাপ্লিকেশনরা RAM এলোকেট করার বিভিন্ন মোড ব্যবহার করে। ব্যবহার করার পর যদি স্পেস ফ্রি না করা হয়, তবে এলোকেশন মোড যেকোনো হোক মেমরি লিক হবে। কিছু সাধারণ এলোকেশন প্যাটার্ন:
- HeapAlloc ফাংশন হিপ মেমরি এলোকেশনের জন্য। C/C++ রানটাইম সমতুল্য malloc এবং new।
- VirtualAlloc ফাংশন OS থেকে সরাসরি এলোকেশনের জন্য।
- Kernel32 APIs অ্যাপের জন্য কের্নেল মেমরি ধরে রাখতে। উদাহরণ: CreateFile, CreateThread।
- User32 APIs এবং Gdi32 APIs।
উইন্ডোজে মেমরি লিক প্রতিরোধ করুন
প্রতিরোধ চিকিৎসার চেয়ে ভালো, তাই মেমরি লিক প্রতিরোধের কিছু উপায় নিচে দেওয়া হলো।
মনিটরিং অভ্যাস

আপনাকে প্রতিটি প্রোগ্রাম এবং অ্যাপ্লিকেশনের অস্বাভাবিক RAM ব্যবহার পড়া রাখতে হবে। CTRL+SHIFT+ESC চাপিয়ে উইন্ডোজ টাস্ক ম্যানেজার খুলুন এবং Handles, User Objects, GDI Objects ইত্যাদি কলাম যোগ করুন।
এটি আপনাকে রিসোর্স ব্যবহার সহজে মনিটর করতে সাহায্য করবে।
পড়ুন: কম্পিউটারে মেমরির প্রকারগুলো কী কী?
মাইক্রোসফট টুলস মেমরি লিক ডায়াগনোজ করার জন্য
বিভিন্ন এলোকেশন মোডের জন্য বিভিন্ন টুল মেমরি লিক ডায়াগনোজ করে:
- Application Verifier হিপ লিক ডায়াগনোজ করে।
- UMDH (Windows Debugging Tools-এর একটি কম্পোনেন্ট) হিপ মেমরি এলোকেশন মনিটর করে প্রসেস অনুযায়ী লিক ডায়াগনোজ করে।
- Trace Capture RAM ব্যবহার থারো বিশ্লেষণের জন্য।
- Xperf হিপ এলোকেশন প্যাটার্ন ট্র্যাক করে।
- CRT Debug Heap শুধু হিপ এলোকেশন ট্র্যাক করে না, লিক মিনিমাইজ করার কোডিং প্র্যাকটিসও ইnebল করে।
- JavaScript Memory Leak Detector কোডে মেমরি লিক ডিবাগ করে।
ব্যবহার টিপস
- Win32 রিসোর্স ও হিপ এলোকেশনের জন্য কের্নেল HANDLE এবং অন্যান্য স্মার্ট পয়েন্টার ব্যবহার করুন।
- ATL লাইব্রেরি থেকে কের্নেল এলোকেশনের জন্য অটোমেটিক রিসোর্স ম্যানেজমেন্ট ক্লাস পান। C++ স্ট্যান্ডার্ডে হিপ এলোকেশনের জন্য auto_ptr আছে।
- COM ইন্টারফেস পয়েন্টারগুলো _com_ptr_t বা _bstr_t বা _variant_t সাহায্যে "স্মার্ট পয়েন্টার" এ ইনক্যাপসুলেট করুন।
- .NET কোড অস্বাভাবিক মেমরি ব্যবহার জন্য মনিটর করুন।
- ফাংশনগুলোর একাধিক এক্সিট পাথ এড়িয়ে চলুন যাতে alokেশন ফাংশন শেষে ভেরিয়েবল থেকে ফ্রি হয়ে যেতে পারে।
- নেটিভ এক্সেপশন ব্যবহার করুন শুধু সকল এলোকেশন _finally ব্লকে ফ্রি করার পর। C++ এক্সেপশন ব্যবহার করতে হিপ ও হ্যান্ডেল এলোকেশন স্মার্ট পয়েন্টারে র্যাপ করুন।
- PROPVARIANT অবজেক্ট রিইনিশিয়ালাইজ বা ডিসকার্ড করার আগে সবসময় PropVariantClear ফাংশন কল করুন।
উইন্ডোজে মেমরি লিক ট্রাবলশুট করুন
মেমরি লিক প্রতিরোধের বিভিন্ন উপায়ের মতোই মেমরি লিক বন্ধ করার বিভিন্ন উপায় আছে। কিন্তু শুরু করার আগে সিস্টেম রিস্টোর পয়েন্ট তৈরি করুন।
১] প্রসেস বন্ধ করুন এবং রিস্টার্ট করুন।
যদি কোনো অপ্রয়োজনীয় প্রসেস খুব বেশি RAM নিচ্ছে, তবে টাস্ক ম্যানেজারে সেটি এন্ড করুন। ডিভাইস রিস্টার্ট করতে হবে যাতে ফ্রি স্পেস অন্যান্য প্রসেসের জন্য উপলব্ধ হয়। রিস্টার্ট ছাড়া মেমরি লিক সমস্যা সমাধান হবে না। একটি নির্দিষ্ট প্রসেস Runtime Broker যেটি বাগ دارুন পিসি স্লো করে। চেক করুন শুধু সেটি ডিজেবল করলে কাজ করে কিনা।
২] মেমরি ডায়াগনস্টিক টুলস

উইন্ডোজের বিল্ট-ইন মেমরি ডায়াগনস্টিক টুল এক্সেস করতে:
- সব গুরুত্বপূর্ণ কাজ সেভ করুন।
- Win + R চাপিয়ে Run উইন্ডো খুলুন।
- Run উইন্ডোতে mdsched.exe কমান্ড টাইপ করুন।
- PC রিস্টার্ট করুন।
- রিস্টার্টের পর বেসিক স্ক্যান করুন অথবা 'Advanced' অপশনগুলো যেমন 'Test mix' বা 'Pass count' বেছে নিন।
- F10 চাপিয়ে টেস্ট শুরু করুন।
এইগুলো এখনও مؤقت সমাধান।
৩] ড্রাইভার আপডেট চেক করুন

পুরনো ড্রাইভার মেমরি লিক সৃষ্টি করে। সব ড্রাইভার আপডেট রাখুন:
- Win + R চাপিয়ে Run উইন্ডো খুলুন। devmgmt.msc টাইপ করে Enter চাপুন। এটি আপনাকে Device Manager-এ নিয়ে যাবে।
- পুরনো ড্রাইভার চেক করুন এবং সব আপডেট করুন।
- Windows Update-এ চেক করুন যে আপডেটগুলো আপনি মিস 했을 কিনা।
এটা সহজ ছিল।
৪] পারফরম্যান্স অপ্টিমাইজ করুন

উইন্ডোজকে পারফরম্যান্সের জন্য অ্যাডজাস্ট করলে প্রসেসর শিডিউলিং এবং মেমরি ব্যবহার ম্যানেজ হয়ে মেমরি লিক বন্ধ হয়। নিচের ধাপগুলো ফলো করুন:
- 'This PC'-তে রাইট-ক্লিক করে বাম প্যানেল থেকে 'Advanced' সেটিংস সিলেক্ট করুন।
- 'Advanced' ট্যাবে 'Performance'-এ যান, তারপর 'Settings'-এ ক্লিক করুন।
- 'Adjust for best performance' চেক করুন এবং OK ক্লিক করুন।
- রিস্টার্ট করুন এবং চেক করুন সমস্যা সমাধান হয়েছে কিনা।
যদি এই সহজ সমাধান কাজ না করে, তবে পরবর্তী সমাধান চেষ্টা করুন।
৫] স্টার্টআপে চলা প্রোগ্রামগুলো ডিজেবল করুন

সমস্যাযুক্ত প্রোগ্রামগুলো ডিজেবল করাই মেমরি লিক ইস্যু থেকে মুক্তি পাওয়ার একমাত্র উপায়। Task Manager-এ যান এবং সমস্যাযুক্ত প্রোগ্রাম ডিজেবল করুন। আপনি না জানেন কোন প্রোগ্রামগুলো সমস্যা সৃষ্টি করছে, তবে নিচের কাজ করুন:
- 'Task Manager'-এ যান।
- 'Startup'-এ যান।
- ডিফল্টভাবে রান হওয়া যেসব স্টার্টআপ প্রোগ্রাম দরকার নেই সেগুলো ডিজেবল করুন।
৬] হার্ড ড্রাইভ ডিফ্র্যাগ করুন

যদিও উইন্ডোজ ১০ এটি অটোমেটিক করে, তবুও কখনো কখনো হার্ড ড্রাইভ ডিফ্র্যাগ করতে হয় পারফরম্যান্স অপ্টিমাইজ করতে:
- 'This PC' বা 'My Computer'-এ যান।
- সিস্টেম হার্ড ড্রাইভে (সাধারণত C: ড্রাইভ) রাইট-ক্লিক করুন।
- 'Properties'-এর অধীনে 'Tools'-এ যান এবং 'Optimize' সিলেক্ট করুন।
- ডিফ্র্যাগ করার ড্রাইভ সিলেক্ট করুন এবং 'Analyze' সিলেক্ট করুন।
নতুন ফ্র্যাগমেন্টেশন পর কম্পিউটার রিস্টার্ট করুন।
৭] শাটডাউনে Page File ক্লিয়ার করুন
এখন কিছু জটিল হচ্ছে—কিন্তু চিন্তা করবেন না। প্রতিটি শাটডাউনে Page File ক্লিয়ার করার পদ্ধতি:
- সার্চে regedit টাইপ করুন Registry Editor লঞ্চ করতে।
- এই পথে যান:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- ClearPageFileAtShutDown-এর ভ্যালু '1' এ পরিবর্তন করুন।
- পরিবর্তন সেভ করে ডিভাইস রিস্টার্ট করুন।
এটা কাজ করবে। মনে রাখবেন আপনার শাটডাউন প্রসেস একটু বেশি সময় নেবে।
৯] Superfetch ডিজেবল করুন
এই উইন্ডোজ সার্ভিস বুট টাইম মিনিমাইজ করে পারফরম্যান্স অপ্টিমাইজ করে। এটি উইন্ডোজকে RAM ব্যবহার ম্যানেজ করতে দেয়। Superfetch ডিজেবল করার পর জীবন সুবিধাজনক নয় কিন্তু আবশ্যক হলে করুন। কমপক্ষে একবার এটি আলাদা করে সমস্যা আইসোলেট করার চেষ্টা করুন:
- services.msc সার্চ করে Services Manager-এ যান।
- 'Superfetch'-এ খুঁজে বের করুন এবং রাইট-ক্লিক করে 'Properties'-এ যান।
- 'Stop' সিলেক্ট করুন।
- ড্রপ-ডাউন মেনু থেকে 'Disable' করুন সার্ভিসটি।
- PC রিস্টার্ট করুন এবং চেক করুন পারফরম্যান্স উন্নত হয়েছে কিনা।
কাজ না হলে Superfetch আবার ইনেবল করুন।
১০] ম্যালওয়্যার চেক করুন
থার্ড-পার্টি অ্যান্টিভাইরাস সফটওয়্যার বা উইন্ডোজ ১০-এর নিজস্ব উইন্ডোজ ডিফেন্ডার ব্যবহার করে স্ক্যান করুন এবং ম্যালওয়্যার দূর করুন। নিশ্চিত করুন অ্যান্টিভাইরাস আপডেটেড আছে আপনার OS সাপোর্ট করার জন্য যাতে সেটি মেমরি লিকের কারণ না হয়ে যায়।
মেমরি লিক খুঁজে বের করা বা প্রতিরোধ করার জন্য আপনার প্রয়োজনীয় সব সমাধান এখানেই আছে। আপনি MSDN এবং মাইক্রোসফটে মেমরি লিক সম্পর্কে আরও পড়তে পারেন।
