Утечка ресурсов - Resource leak
В Информатика, а утечка ресурсов это особый тип ресурс потребление компьютерная программа где программа не высвобождает ресурсы, которые она приобрела. Это состояние обычно является результатом ошибки в программе. Типичные утечки ресурсов включают: утечка памяти и справиться с утечкой, в частности, утечки дескрипторов файлов, хотя память часто рассматривается отдельно от других ресурсов.[1]
Примеры ресурсов, доступных в ограниченном количестве Операционная система включают интернет-розетки, файловые ручки, таблица процессов записи и идентификаторы процесса (PID). Утечки ресурсов часто являются незначительной проблемой, вызывая в лучшем случае незначительное замедление работы и устраняемые после завершения процессов. В других случаях утечки ресурсов могут быть серьезной проблемой, вызывая ресурсный голод и серьезное замедление или нестабильность системы, сбой процесса утечки, других процессов или даже системы.[2] Утечки ресурсов часто остаются незамеченными при небольшой нагрузке и коротком времени работы, и эти проблемы проявляются только при большой нагрузке на систему или при работе систем в течение длительного времени.[3]
Утечки ресурсов представляют особую проблему для ресурсов, доступных в очень малых количествах. Утечка уникального ресурса, такого как замок, является особенно серьезным, так как это вызывает немедленную нехватку ресурсов (это не позволяет другим процессам получить его) и вызывает тупик. Преднамеренно утечка ресурсов может быть использована в атака отказа в обслуживании, например вилка бомба, и, таким образом, утечки ресурсов представляют собой ошибка безопасности.
Причины
Утечки ресурсов обычно происходят из-за ошибок программирования: ресурсы, которые были получены, должны быть освобождены, но поскольку выпуск часто происходит существенно после приобретения, и многие вещи могут происходить тем временем (например, возникновение исключения или аварийное завершение программы), это легко для выпуска будет пропущено.
Очень распространенный пример - неспособность закрыть открытые файлы, что приводит к утечке дескриптора файла; это также происходит с трубы. Другой распространенный пример - это родительский процесс не позвонить ждать на дочерний процесс, который оставляет завершенный дочерний процесс как зомби процесс, утечка таблица процессов Вход.
Профилактика и смягчение последствий
Утечки ресурсов можно предотвратить или устранить с помощью Управление ресурсами: методы программирования или языковые конструкции могут предотвращать утечки, быстро высвобождая ресурсы, в то время как отдельный процесс может восстанавливать утечки ресурсов. Многие утечки ресурсов устраняются путем восстановления ресурсов Операционная система после завершения процесса и делает выход
системный вызов.
Таким образом, утечки ресурсов являются в первую очередь проблемой для долгоживущих процессов, поскольку утечки ресурсов, удерживаемые все еще работающими процессами, часто не восстанавливаются; и для процессов, которые быстро приобретают и теряют много ресурсов.
Смотрите также
Рекомендации
- ^ Deitel, Harvey M .; Дейтель, Пол Дж. (2005), C # для программистов (2-е изд.), Prentice Hall Professional, стр. 443, г. ISBN 9780132465915.
- ^ Руссинович, Марк; Соломон, Давид; Ионеску, Алекс (2012), Внутреннее устройство Windows, часть 1 (6-е изд.), Pearson Education, стр. 279, г. ISBN 9780735671300.
- ^ Грегори, Кейт (1998), Использование Visual C ++ 6, Que Publishing, стр.590, ISBN 9780789715395.