Утечка ресурсов - Resource leak

В Информатика, а утечка ресурсов это особый тип ресурс потребление компьютерная программа где программа не высвобождает ресурсы, которые она приобрела. Это состояние обычно является результатом ошибки в программе. Типичные утечки ресурсов включают: утечка памяти и справиться с утечкой, в частности, утечки дескрипторов файлов, хотя память часто рассматривается отдельно от других ресурсов.[1]

Примеры ресурсов, доступных в ограниченном количестве Операционная система включают интернет-розетки, файловые ручки, таблица процессов записи и идентификаторы процесса (PID). Утечки ресурсов часто являются незначительной проблемой, вызывая в лучшем случае незначительное замедление работы и устраняемые после завершения процессов. В других случаях утечки ресурсов могут быть серьезной проблемой, вызывая ресурсный голод и серьезное замедление или нестабильность системы, сбой процесса утечки, других процессов или даже системы.[2] Утечки ресурсов часто остаются незамеченными при небольшой нагрузке и коротком времени работы, и эти проблемы проявляются только при большой нагрузке на систему или при работе систем в течение длительного времени.[3]

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

Причины

Утечки ресурсов обычно происходят из-за ошибок программирования: ресурсы, которые были получены, должны быть освобождены, но поскольку выпуск часто происходит существенно после приобретения, и многие вещи могут происходить тем временем (например, возникновение исключения или аварийное завершение программы), это легко для выпуска будет пропущено.

Очень распространенный пример - неспособность закрыть открытые файлы, что приводит к утечке дескриптора файла; это также происходит с трубы. Другой распространенный пример - это родительский процесс не позвонить ждать на дочерний процесс, который оставляет завершенный дочерний процесс как зомби процесс, утечка таблица процессов Вход.

Профилактика и смягчение последствий

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

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

Смотрите также

Рекомендации

  1. ^ Deitel, Harvey M .; Дейтель, Пол Дж. (2005), C # для программистов (2-е изд.), Prentice Hall Professional, стр. 443, г. ISBN  9780132465915.
  2. ^ Руссинович, Марк; Соломон, Давид; Ионеску, Алекс (2012), Внутреннее устройство Windows, часть 1 (6-е изд.), Pearson Education, стр. 279, г. ISBN  9780735671300.
  3. ^ Грегори, Кейт (1998), Использование Visual C ++ 6, Que Publishing, стр.590, ISBN  9780789715395.