Утечка памяти

Уте́чка па́мяти (англ. memory leak) — неконтролируемый процесс уменьшения объема свободной оперативной памяти (RAM) компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти. Основной причиной данных ошибок является прямое выделение динамической памяти без использования служебных обьектов, следящих за её очисткой. Утечки памяти являются первым признаком «грязного» стиля программирования.

Такие ошибки являются одними из самых трудоемких в обнаружении. Некоторые языки программирования (например, Java) предоставляют средства, позволяющие автоматически освобождать неиспользуемую память (garbage collector, «сборщик мусора»). Тем не менее, Java тоже не поможет вам полностью справиться с утечками памяти по причинам крайней трудности контроля. За использование подобных средств приходится расплачиваться также быстродействием системы. Другие языки (FORTRAN-77) полностью отказываются от применения механизмов динамического распределения памяти, что исключает подобные ошибки, но существенно ограничивает функциональность программ.

Также существует ошибка, именуемая утечкой дескрипторов: захваченные дескрипторы не возвращаются операционной системе.

Для борьбы с последствиями таких ошибок разработчики операционных систем вводят в них функциональность, позволяющую ограничивать объем памяти, количество дескрипторов и количество процессорного времени, доступного одному пользователю.

Для профессиональных языков программирования существуют специальные программы-профилировщики, позволяющие обнаружить в числе прочего и утечки памяти.

См. также

Ссылки

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home