#memory #memory-leaks #memory-leak-detector
#память #утечки памяти #детектор утечки памяти
Вопрос:
Мой клиент использует RHEL, и у них возникла проблема, которая мне кажется утечкой памяти.
Но мой клиент показал мне, что доступно много памяти, и потребление является разумным.
Итак, мой вопрос в том, что в случае утечки памяти неизбежно ли столкнуться с проблемой потребления памяти? Или могут быть сценарии, в которых утечка памяти может привести ко многим другим проблемам без использования памяти?
Ответ №1:
Утечка памяти — это то, чего мы, как разработчики, определенно не хотим и должны исправлять, когда они появляются.
Однако утечки памяти не обязательно являются проблемой на практике. Если нет ошибки или утечки памяти в самом ядре ОС, вся утечка памяти, происходящая в каком-либо программном обеспечении с ошибками, будет автоматически освобождена при завершении программы. Таким образом, серьезность утечки памяти действительно зависит от фактических чисел:
- Какова средняя скорость утечки памяти в байтах в секунду?
- Каково ожидаемое время жизни программы в секундах?
- Сколько памяти доступно в системе?
Например, небольшая утилита, пропускающая 1 килобайт в секунду, работающая только в течение 1 секунды на компьютере с 32 ГБ, останется совершенно незамеченной, если вы не профилируете ее. Но если эта же утилита является постоянным демоном на рабочем сервере, это становится проблемой: объем выделяемой памяти будет увеличиваться на 86 МБ в день, и после года безотказной работы демон потеряет 31,5 ГБ, столько же, сколько системной памяти.
Но даже в последнем случае система, вероятно, продолжит работать бесперебойно, потому что вся утечка памяти, вероятно, будет заменена на диск и останется там навсегда, поскольку к утечке памяти больше нельзя получить доступ, когда указатель на нее потерян.
Хорошо написанное программное обеспечение без какой-либо утечки памяти вполне может выделить гигабайты памяти для своих нужд. Это гораздо более высокое потребление памяти, чем полностью наивная программа, написанная новичком, которая полностью теряет свои несколько килобайт.
Итак, я пришел к выводу, что это зависит. В большинстве случаев утечки памяти в пользовательских программах не являются проблемой, хотя, конечно, их следует избегать. В ядре ОС и в программном обеспечении daemon они обычно критичны.
Комментарии:
1. Ценю разъяснение. Я искал что-то вроде этого с немного соответствующей справочной информацией.