|
2 / 2 / 0
Регистрация: 04.02.2013
Сообщений: 92
|
||||||||||||
Что считать утечкой памяти?20.06.2015, 16:05. Показов 3498. Ответов 65
Метки нет (Все метки)
0
|
||||||||||||
| 20.06.2015, 16:05 | |
|
Ответы с готовыми решениями:
65
Как бороться с утечкой памяти?
Как справиться с утечкой памяти в коде? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 21.06.2015, 13:43 | |||
|
Кликните здесь для просмотра всего текста
можно много раз запускать хэлловорлд на выполнение. и ни разу не возникнет ситуации, когда приложение зажирает непойми какую память, не пойми куда.
0
|
|||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 21.06.2015, 14:07 | |
|
hoggy, Википедия не является авторитетным источником. Или назовите мне автора этого определения. А то оно стремное какое-то. То есть если я напишу демон, который вообще не будет освобождать память, и скажу, что он контролируемо сжирает всю память ОС за 2 часа, после чего я его рестарчу, то типа у меня в демоне утечек памяти нет? А может все-таки это говорит о том, что там дофига утечек, но просто я на них забил?
У нас в памяти есть объект, который оттуда нельзя удалить. Приложение само не освобождает память, в которой больше не нуждается для работы, а возлагает это на ОС. Поэтому в приложении - по определению это утечка. Осознанная или нет, допустимая или нет, - это уже другой вопрос. Если мы пишем продакшен-код, то нужно спрашивать себя - "есть ли тут реальная причина не освобождать память"? Если причины нету, то освобождать. Обратные вопросы типа "а можно ли тут не освобождать память" - показатели непрофессионализма, до добра не доводящие.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 21.06.2015, 14:27 | |||
|
и всех все устраивает. если требования изменятся, и нужно будет, что бы демон 7/24 крутился без рестартов, а он не может, потому что падает от нехватки памяти, и хрен что с этим поделаешь, без серьёзного рефактора, тогда это уже будет называться "утечки". вот вам другой пример: есть специальные аппараты, и софтина под них. требование к работе: утюг. воткнули в розетку - работает. выткнули - не работает. в каких то частых циклах память освобождается, как и должно быть по уму. но долгоживущие объекты, аля "звуковая подсистема" создаются, а на освобождение забивается. зачем? время жизни - до конца приложения. а выключение - дернуть шнур из розетки. однако, главный признак профессионализма - не делать то, что можно было бы не делать. то есть, не делать что-либо зазря. в случае с утюгом, требования изменились. и захотелось, что бы на одном аппарате было несколько софтин, и была возможность вызывать меню, с помощью которого можно было переключаться между ними. мои софтинки это спокойно перенесли, потому что я использовал смарт-поинтеры, и вручную память нигде не дергал. это к слову о продакшене. а вот если кто нибудь докалебется до хэлловорлда из 5 строк кода: так и хочется ответить: да идите в баню, оно вообще надо? писать дополнительный код, который не относится к иллюстрации момента, и никому нафиг не нужен.
0
|
|||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 21.06.2015, 14:44 | ||
|
* Демон жрет память, мы это знаем, поэтому перезапускаем его каждые пару часов и радуемся. Утечек нет. * Забыли перезапустить демона вовремя - утечки есть. Так?
1
|
||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
||
| 21.06.2015, 14:59 | ||
|
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||
| 21.06.2015, 15:18 | |||
|
hoggy, в статьях, документациях, инструментах обнаружения утечек, которые я видел, - везде это характеризуется как свойство именно кода, безотносительно каких-либо внешних требований. Можете привести ссылки какие-нибудь?
![]() Добавлено через 5 минут
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||
| 21.06.2015, 20:01 | |||||||||
|
потому что никто в здравом уме не будет сознательно писать настолько запредельный б_ы_д_л_о_к_о_д. но если бы нашелся настоящий ценитель: забыл бы перезапустить демона - поимел бы аварию сервиса. а не утечку. я вам приведу более реалестичный пример: допустим, есть некий движок для видео-игр:
заметьте: я не спрашиваю, есть ли тут утечка, я спрашиваю: теоретически вообще может ли здесь быть утечка? Кликните здесь для просмотра всего текста
нет здесь никаких утечек.
потому что, все подсистемы кроме звуковой зависят друг от друга. и если даже вылетит исключение при конструировании очередной из них, движок уже не сможет работать. что с того, что у нас там не отработают диструкторы отдельных полей класса в случае эксепшенов? что с того, что часть памяти зачистит система, а не оператор delete ? у нас в любом случае авария несовместимая с жизнью приложения. мы все равно ничего не можем сделать. ну поменяем мы сырые указатели на смартпоинтеры, ну позвали мы эти самые диструкторы. что дальше? в любом случае все, всё, что мы можем сделать в этой ситуации, это заллогировать происшествие, и тихо помереть. видео-игра без окна, без графики, без гуи функционировать все равно не сможет. но для логгирования нам звать диструкторы не нужно. мы это итак можем сделать. и уже не важно кто зачистит за приложением: система, или диструкторы классов. исход все равно один: это авария. а не утечка. так что здесь есть только два варианта: либо авария, и шандец всему. либо все отлично, играем, наслаждаемся жизнью. обратите внимание, что звуковая подсистема обернута в трай-кетч. без окна, графики жить нельзя. а без звуковой можно. поэтому для неё персонально exception-safe Добавлено через 8 минут вот вам очень простой способ: вы сознательно выбросили объекты, или вы их потеряли?
0
|
|||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 21.06.2015, 20:07 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 21.06.2015, 20:27 | |
|
0
|
|
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||||
| 21.06.2015, 22:17 | ||||||||
![]() Определение утечки памяти - одно единственное: отсутствие возможности освободить память объекта, доступ к которому невозможен. (Не знаю даже какой авторитетности должен быть источник, чтобы в это поверил наш неверующий Фома). Считать утечки существенными или нет - совершенно другой разговор (то, что пытается впарить нам hoggy). Важность утечки никоим образом не отменяет факта существования самой утечки. Если вдруг возникло какое-то сомнение - запусти профайлер, заточенный на поиск утечек и посмотри, что он будет говорить например для такого кода (с delete и без):
Вариант вывода valgrind'а:
0
|
||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 21.06.2015, 22:22 | ||
|
потому что везде пишут: неконтролируемая утеря ресурса.
0
|
||
| 21.06.2015, 22:23 | |
|
Не по теме: Tulosba, я что-то не понял, они всё-таки добавили кнопку "Выделить код", или я неосознанно скрипт установил?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 21.06.2015, 22:24 | ||
|
правда настроил так, что бы он не агрился на эту переменную. и блин... молчит, зараза. или вот: запилил сингелтон, который майн пережил - сагрилсо! вот не нада вот такую туфту прогонять. я аппелирую к здравому смыслу. вы - к форме, не учитывая содержание.
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 21.06.2015, 22:31 | ||
|
Контроль подразумевает возможность что-то сделать (освободить память в данном случае), а возможности этой нет на уровне языка. И не надо тут про ОС повторять. ОС это уже другой уровень, которого, как я раньше говорил, может и вовсе не быть.
0
|
||
| 21.06.2015, 22:34 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 21.06.2015, 22:39 | ||||||
|
ключевое слово "забытый". обратите внимание: и потом, на то оно и контролируемое, что программист в курсе. так что даже если теоретически нужно будет портануться на какие нибудь микроволноффки - проблем не вызовет.
0
|
||||||
| 21.06.2015, 22:39 | |
|
Является ли данный случай утечкой памяти? Когда исправят баг с утечкой памяти в Rhythmbox?
Как бороться с утечкой памяти в приложении при его длительной работе Считать изображения из памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить сумму и количество положительных элементов массива, расположенных в четных строках.
Решение:
Создан документ с. . .
|
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности.
. . .
|