نشت حافظه (Memory Leak) چیست و چگونه میتوانیم از آن جلوگیری کنیم؟
کامپیوترهای مدرن، حافظه ذخیرهسازی و رم بالایی در اختیار داشته و به همین دلیل سرعت خوبی در زمینه انجام وظایف دارند. حال گاهی اوقات یک مشکل کوچک میتواند باعث کند شدن کامپیوتر شما شود که یکی از این مشکلها میتواند نشت حافظه (Memory Leak) باشد. در ادامه قصد داریم که بیشتر به این موضوع بپردازیم.
نشت حافظه چیست؟
اطلاعات اپلیکیشنهای مختلف بهصورت موقتی در حافظه رم کامپیوتر شما ذخیره میشوند. هنگامی که قسمتی از یک برنامه از بخشی از حافظه رم شما استفاده کرده، اما در نهایت آن را آزاد نکند، آنگاه میگوییم که نشت حافظه رخ داده است. نتیجه این موضوع نیز این میشود که دفعه بعدی که یک اپلیکیشن بخواهد که از حافظه بیشتری استفاده کند، آن اپلیکیشن کرش میکند. همین قضیه میتواند تأثیر بدی بر روی عملکرد کامپیوتر شما داشته باشد.
چگونه نشت حافظه را تشخیص دهیم؟
هنگامیکه مشکل کمبود رم داشته باشید، آنگاه با پیغامی مواجه میشوید که در آن عبارت “running out of memory” نوشته شده است. در ادامه نیز عملکرد کامپیوتر شما مختل میشود. با نگاه کردن به میزان استفاده از رم کامپیوتر خود، میتوانید به نشت حافظه پی ببرید. با اجرای Windows Performance Monitor میتوانید این موضوع را تشخیص دهید. در اینجا نمیتوانید که عامل نشت حافظه را پیدا کنید، اما حداقل میتوانید که از وجود چنین چیزی، اطمینان حاصل کنید.
- جهت اجرای Windows Performance Monitor باید کلیدهای “Windows + R” را فشار داده تا پنجره “Run” برای شما باز شود. در ادامه باید “mdsched.exe” را تایپ کرده و کلید “Enter” را فشار دهید.
- در ادامه باید بر روی “OK” کلیک کرده و سپس “Restart Now” را انتخاب کنید تا وجود یا عدم مشکل بررسی شود. تست شروع شده و شاید تکمیل آن چندین ساعت طول بکشد. در ادامه باید دستورات نمایش داده بر روی صفحه را دنبال کرده تا نشت حافظه را تشخیص دهید.
پیامدهای Memory Leak
پیامدهای این موضوع نیز به این بستگی دارند که آیا از اپلیکیشنهای سرور استفاده میکنید یا اپلیکیشنهای کاربر.
اپلیکیشنهای کاربر (دسکتاپ و گوشیهای موبایلی)
در رابطه با اینگونه اپلیکیشنها، پیامد خیلی جدی نیست، زیرا حافظه تخصیص داده شده در هنگام بسته شدن اپلیکیشن، آزاد میشود. بنابراین ناپایداری سیستم به وجود نمیآید. برخی از مشکلاتی که به دلیل استفاده بیش از حد از حافظه رخ میدهند، به شرح زیر هستند:
- کاهش سرعت کامپیوتر
- بسته شدن ناگهانی اپلیکیشنها
- کد تخصیص دهنده حافظه در اپلیکیشن شما، میتواند کرش کرده و باگهایی را ایجاد کند.
اپلیکیشنهای سرور
اگر این مشکل در یک سرور رخ دهد، آنگاه قضیه بدتر خواهد شد، زیرا سرورها باید مدت زمان زیادی فعالیت بدون وقفه داشته باشند. مشکلاتی که در اینجا رخ میدهد نیز مشابه مشکلات اپلیکیشنهای دسکتاپی هستند. حافظه در طول روزها، هفتهها و ماهها مصرف شده و در نتیجه کارایی سرور نیز پایین میآید. باگها شروع به پدیدار شدن میکنند و در نهایت هم فعالیت سرور متوقف میشود.
چگونه از Memory Leak جلوگیری کنیم؟
در اکثر زبانهای برنامه نویسی امروزی، قابلیتهایی وجود دارند که توسعهدهندگان به وسیله آنها میتوانند حافظه را بهصورت خودکار مدیریت کنند. این زبانها از چیزی به نام Garbage Collector استفاده میکنند. این ویژگی به آزاد کردن حافظهای که استفاده نمیشود، کمک میکند. انواع گوناگونی از Garbage Collectorها وجود دارند و درک شیوه عملکرد Garbage Collector اپلیکیشنها میتواند گامی مهم در جلوگیری از نشت حافظه باشد.
این مطلب را نیز بخوانید: چگونه مشکل خالی نشدن سطل آشغال ویندوز 10 را برطرف کنیم؟
یکی دیگر از روشها این است که کدی بنویسید که بتواند منابعی را که موردنیاز نیست، آزاد کند. کد شما باید بهگونهای باشد که بتواند مشخص کند که آیا وظیفه در حال انجام اپلیکیشن موردنظر، به اتمام رسیده است یا خیر؟ بدین ترتیب از اجرای کامل حلقهها اطمینان حاصل شده و از این طریق از نشت حافظه جلوگیری میشود.
شیوههای رفع نشت حافظه در ویندوز 10
شاید در مراحل اولیه توسعه، تشخیص و رفع مشکل نشت حافظه دشوار باشد، اما در هر صورت برخی از روشهای مواجه با این مشکل، به شرح زیر هستند:
1. بستن برنامهای که بیشترین استفاده را از حافظه دارد
جهت انجام این کار باید کلیدهای “CTRL + Shift + ESC” را فشار داده تا تسک منیجر برای شما باز شود. به برگه “Process” رفته و سپس برنامهای را که بیشترین استفاده را از حافظه میکند، پیدا کنید. در ادامه بر روی برنامه موردنظر کلیک-راست کرده و “End Task” را انتخاب کنید تا بسته شود. در ادامه با ریستارت کردن کامپیوتر، مشکل نشت حافظه شما رفع میشود.
2. استفاده از ابزارهای داخلی ویندوز 10
در خود ویندوز 10 ابزارهایی وجود دارند که از طریق آنها میتوانید تحلیل دقیقی را در رابطه با دلیل به وجود آمدن این مشکل، ترتیب دهید.
- به منوی استارت رفته و عبارت “Windows Memory Diagnostic” را تایپ کرده و در ادامه بر روی اپلیکیشن ظاهر شده، کلیک کنید.
- در ادامه با انتخاب “Restart now”، وارد مرحله بررسی مشکلات میشوید. این ابزار کامپیوتر شما را در رابطه با پیدا کردن مشکلات حافظه، اسکن میکند و در نهایت نیز مشکلات تشخیص داده شده را به شما نمایش میدهد.
همچنین ابزار داخلی Resource Monitor نیز میتواند در این زمینه به شما کمک کند. به منوی استارت رفته، “Resource Monitor” را تایپ کرده و سپس آن را باز کنید. در ادامه میتوانید دادههای آنی مربوط به فعالیت سیستم خود را مشاهده کنید.
3. تعدیل ویژگیهای سیستم جهت به دست آوردن بهترین عملکرد
- بر روی دسکتاپ خود کلیک-راست کرده و سپس “Personalize” را انتخاب کنید. در پنجره جدید و در نوار جستوجو، “Advanced System Settings” را تایپ کنید.
- پس از طی کردن گامهای بالا، به برگه “Advanced” رفته و در زیر “Performance” بر روی “Settings” کلیک کنید.
- پس از آن، گزینه “Adjust for Best Performance” را فعال کنید. بر روی “OK” کلیک کرده و سپس کامپیوتر خود را ریستارت کنید. اکنون منابع کامپیوتر شما بیشتر در خدمت عملکرد هستند تا ظاهر سیستمعامل.
4. غیرفعال کردن برنامههایی که از استارتاپ اجرا میشوند
گاهی اوقات برنامهای که از همان ابتدای بالا آمدن ویندوز اجرا شده، باعث نشت حافظه میشود. جهت رفع این مشکل، باید از اجرا شدن اپلیکیشن موردنظر از هنگام استارتاپ، جلوگیری کنید.
- کلیدهای “CTRL + SHIFT + ESC” را فشار داده تا تسک منیجر برای شما باز شود. در ادامه به برگه “Startup” بروید.
- در ادامه باید برنامهای را که قصد اجرا شدن آن از استارتاپ را ندارید، پیدا کنید. همچنین در تسک منیجر نیز میتوانید ببینید که کدام برنامه در حال نشت حافظه است. در ادامه با کلیک-راست بر روی اپلیکیشن موردنظر، انتخاب “Disable” و در نهایت ریستارت کردن کامپیوتر، میتوانید مشکل را برطرف سازید.
5. یکپارچهسازی هارد درایو
- Defragmentation جدا از اینکه عملکرد هارد دیسک را بهتر میکند، باعث میشود که مدیریت حافظه رم نیز بهتر شود. در دستکتاپ خود بر روی “This PC” دابل-کلیک کرده و سپس بر روی درایو موردنظر خود نیز کلیک-راست کنید و در ادامه “Properties” را انتخاب نمایید.
- سپس باید به برگه “Tools” رفته و در زیر “Optimize and Defragment Drive”، بر روی “Optimize” کلیک کنید. صبر کنید تا فرایند به اتمام برسد. در ادامه با ریستارت کردن کامپیوتر میتوانید نتیجه تغییرات را ببینید.
6. غیرفعال کردن Runtime Broker
Runtime Broker مربوط به فرایند مدیریت اجازههای اپلیکیشنهای مایکروسافت است. Runtime Broker معمولا مقدار کمی از حافظه رم را استفاده میکند، اما اگر اپلیکیشنی به مشکل برخورد کند، آنگاه این فرایند میتواند سرعت کامپیوتر شما را به طرز چشمگیری کاهش دهد.
- ابتدا باید کلیدهای “CTRL + SHIFT + ESC” را فشار داده تا وارد تسک منیجر شوید. در اینجا باید فرایند “Runtime Broker” را پیدا کنید.
- بر روی آن کلیک-راست کرده و سپس “Disable/End Task” را فشار دهید.
7. غیرفعال کردن Windows Tips and Tricks
نکات و ترفندهایی که توسط ویندوز 10 نمایش داده میشوند، برای کاربران مبتدی مناسب هستند. این راهنماییها باعث میشوند که کاربر بتواند بهتر از سیستم استفاده کرده و همچنین با برخی از ویژگیهای اضافی دیگر نیز بهتر آشنا شود.
- به منوی استارت رفته و “Settings” را باز کنید.
- در پنجره جدید به بخش “System” بروید. در پنل سمت چپ بر روی “Notifications & actions” کلیک کنید.
- سپس باید “Get tips, tricks, and suggestions as you use Windows” را پیدا کرده و تیک آن را بردارید.
بدین ترتیب دیگر در هنگام استفاده از ویندوز، پیغامهایی را جهت استفاده بهتر، دریافت نخواهید کرد.
سخن پایانی
نشت حافظه میتواند یکی از دلایل اصلی کاهش سرعت کامپیوتر شما باشد و همین موضوع نیز میتواند مشکلات جدی را برای شما به وجود آورد. بهروزرسانی درایورها، ویندوز و همچنین حذف بدافزارها از سیستم میتواند شما را در رفع این مشکل یاری برساند. اگر بازهم سرعت کامپیوترتان پایین بود، آنگاه شاید مجبور شوید که حافظه رم خود را افزایش دهید.
نوشته نشت حافظه (Memory Leak) چیست و چگونه میتوانیم از آن جلوگیری کنیم؟ اولین بار در اخبار فناوری و موبایل پدیدار شد.