Интернет магазин китайских планшетных компьютеров



Компьютеры - Утечка памяти - Чем опасны утечки памяти

23 января 2011


Оглавление:
1. Утечка памяти
2. Чем опасны утечки памяти
3. Утечка других ресурсов



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

Утечки памяти приводят к тому, что потребление памяти программой неконтролируемо возрастает, в результате рано или поздно вступают в действие архитектурные ограничения среды исполнения, и тогда новое выделение памяти становится невозможным. В этой ситуации в программе, которая запрашивает память, обычно происходит аварийная остановка. Это может по стечению обстоятельств произойти и совсем с другой программой после того, как программа, подверженная утечкам, потребит всю память ЭВМ.

Способы предотвращения

Существуют различные способы предотвращения утечек памяти.

Отказ от динамической памяти

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

Владеющие указатели

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

Сборка мусора

Некоторые языки программирования предоставляют средства, позволяющие автоматически освобождать неиспользуемую память. Сборщики мусора решают также и проблему циклических ссылок, но сборка мусора является ресурсоёмкой операцией. За использование подобных средств приходится расплачиваться быстродействием системы.

Сборка мусора была изобретена Джоном Маккарти примерно в 1959 году при разработке языка программирования Лисп, структура которого делает крайне затруднительным ручное управление памятью.

Перезапуск программы

В тех случаях, когда устранить утечки памяти не представляется возможным, например, при использовании кода, поставляемого в виде программных модулей и изготовленного сторонними разработчиками, применяют своеобразный способ игнорирования утечек. Код, подверженный утечкам, размещают в отдельной программе, а эту программу с нужной периодичностью перезапускают. Запуски и перезапуски программы выполняются внешней программой, которая также подаёт исходные данные и забирает результаты. Поскольку при завершении программы вся память, затребованная ей у операционной системы, возвращается операционной системе, такой метод не позволяет утечкам приобрести катастрофический характер.



Просмотров: 2872


<<< Тьюринговская трясина
Жаргон Фидонета >>>