نشت حافظه ( در علوم کامپیوتر ) زمانی اتفاق می افتد که یک برنامه، حافظه ای از سیستم عامل دریافت کند ولی قادر به آزاد کردن و برگرداندن آن نباشد. کمبود حافظه خود نشانه ای بر وجود مشکلات دیگری ( در ادامه می بینیم ) است و معمولاً تنها با اشکال زدایی کد منبع توسط برنامه نویس اصلاح می شود. با این وجود بسیاری از مردم کمبود حافظه را به هر افزایش ناخواسته فضای مصرف شده نسبت می دهند، هرچند که این تعریف کاملاً درست نیست.
کمبود حافظه با کاهش دادن مقدار فضای آزاد می تواند باعث کاهش کارایی سیستم گردد. سرانجام در بدترین حالت بیشتر فضای موجود اشغال می شود که این امر می تواند موجب از کار افتادن کل یا بخشی از سیستم و سخت افزار، بروز مشکل در نرم افزارها یا حتی تأخیر غیرقابل قبولی در سیستمی که منجر به تریشینک می شود، بشود.
در استفاده های معمولی کمبود حافظه شاید خیلی جدی و قابل احساس نباشد. در سیستم عامل های جدید، حافظه مورد استفاده نرم افزارها پس از خروج آن ها آزاد می گردد؛ یعنی کمبود حافظه در برنامه هایی که برای مدت کوتاهی اجرا می شوند خیلی جدی و قابل احساس نیستند.
بعضی از مواردی که می تواند در کمبود حافظه جدی باشند:
• زمانی که برنامه ای برای مدتی طولانی اجرا می گردد و در طول زمان فضای بیشتری مصرف می کند، مانند برنامه هایی که در پس زمینه سرورها مخصوصاً در سامانه های توکار که برای سال ها در حالت اجرا باقی می مانند.
• زمانی که حافظه ای به طور متناوب از سیستم گرفته می شود، مثلاً رمانی که فریم های یک بازی کامپیوتری یا فیلم را تحلیل می کنیم.
• زمانی که برنامه قادر به درخواست حافظه ( مثلاً حافظه به اشتراک گذاشته شده ) است ولی حافظه حتی پس از خروج از برنامه آزاد نمی شوند.
• زمانی که کمبود به خاطر خود سیستم عامل به وجود آید.
• زمانی که کمبود در راه انداز سخت افزار سیستم به وجود آید.
• زمانی که حافظه خیلی محدود است مثلاً در سامانه های توکار یا دستگاه های قابل حمل.
• زمانی که سیستم عامل پس از بسته شدن برنامه به طور خودکار حافظه های اخذ شده را آزاد نکند ( و فقط پس از راه اندازی مجدد آزاد گردد ) ، مانند آمیگا او اِس.
در مثال بیان شده ( در ذیل ) که توسط شبه کد نوشته شده است قصد داریم نشان دهیم که کمبود حافظه چگونه می تواند به وجود آید و چگونه موثر باشد ( بدون نیاز به هیچ گونه دانش برنامه نویسی ) . این برنامه قسمتی از یک نرم افزار ساده ای است که به منظور کنترل یک آسانسور نوشته شده است. این قسمت از برنامه زمانی که هر شخص داخل آسانسور دکمه مربوط به طبقه همکف فشار دهد، اجرا می شود.
این نوشته برگرفته از سایت ویکی پدیا می باشد، اگر نادرست یا توهین آمیز است، لطفا گزارش دهید: گزارش تخلفکمبود حافظه با کاهش دادن مقدار فضای آزاد می تواند باعث کاهش کارایی سیستم گردد. سرانجام در بدترین حالت بیشتر فضای موجود اشغال می شود که این امر می تواند موجب از کار افتادن کل یا بخشی از سیستم و سخت افزار، بروز مشکل در نرم افزارها یا حتی تأخیر غیرقابل قبولی در سیستمی که منجر به تریشینک می شود، بشود.
در استفاده های معمولی کمبود حافظه شاید خیلی جدی و قابل احساس نباشد. در سیستم عامل های جدید، حافظه مورد استفاده نرم افزارها پس از خروج آن ها آزاد می گردد؛ یعنی کمبود حافظه در برنامه هایی که برای مدت کوتاهی اجرا می شوند خیلی جدی و قابل احساس نیستند.
بعضی از مواردی که می تواند در کمبود حافظه جدی باشند:
• زمانی که برنامه ای برای مدتی طولانی اجرا می گردد و در طول زمان فضای بیشتری مصرف می کند، مانند برنامه هایی که در پس زمینه سرورها مخصوصاً در سامانه های توکار که برای سال ها در حالت اجرا باقی می مانند.
• زمانی که حافظه ای به طور متناوب از سیستم گرفته می شود، مثلاً رمانی که فریم های یک بازی کامپیوتری یا فیلم را تحلیل می کنیم.
• زمانی که برنامه قادر به درخواست حافظه ( مثلاً حافظه به اشتراک گذاشته شده ) است ولی حافظه حتی پس از خروج از برنامه آزاد نمی شوند.
• زمانی که کمبود به خاطر خود سیستم عامل به وجود آید.
• زمانی که کمبود در راه انداز سخت افزار سیستم به وجود آید.
• زمانی که حافظه خیلی محدود است مثلاً در سامانه های توکار یا دستگاه های قابل حمل.
• زمانی که سیستم عامل پس از بسته شدن برنامه به طور خودکار حافظه های اخذ شده را آزاد نکند ( و فقط پس از راه اندازی مجدد آزاد گردد ) ، مانند آمیگا او اِس.
در مثال بیان شده ( در ذیل ) که توسط شبه کد نوشته شده است قصد داریم نشان دهیم که کمبود حافظه چگونه می تواند به وجود آید و چگونه موثر باشد ( بدون نیاز به هیچ گونه دانش برنامه نویسی ) . این برنامه قسمتی از یک نرم افزار ساده ای است که به منظور کنترل یک آسانسور نوشته شده است. این قسمت از برنامه زمانی که هر شخص داخل آسانسور دکمه مربوط به طبقه همکف فشار دهد، اجرا می شود.
wiki: نشت حافظه