Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для weterok
36 / 28 / 9
Регистрация: 11.11.2018
Сообщений: 163

Memory leak

30.11.2018, 18:19. Показов 2038. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте, столкнулся с такой проблемой. Растет память приложения, причем не сразу, а по событию. Использовал сначала valgrind, но он тормозил работу программы, решил использовать getrusage() и доставать из структуры rusage значение памяти, чтобы сравнить память до метода и после. Можете ли вы высказать за и против использования такого метода, или предложить варианты, потому что зацепиться особо не за что?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2018, 18:19
Ответы с готовыми решениями:

Класс для работы с shared memory
Всем привет, пытаюсь написать класс для работы с shared memory, создание проходит вроде как успешно, а вот получить к ней доступ по id не...

Ошибка: Out of memory. /LARGEADDRESSAWARE
Добрый день. Возникла такая проблема: есть приложения в которой строиться отчет и отчет съедает много памяти > 4gb. Флаг...

Run exe from memory (x64)
Есть необходимость запускать exe из памяти, а не с диска. Может кто сталкивался с данным проектом? Сам находил много проектов, но они...

5
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
30.11.2018, 18:28
Цитата Сообщение от weterok Посмотреть сообщение
Можете ли вы высказать за и против использования такого метода, или предложить варианты, потому что зацепиться особо не за что?
Сырцы смотреть. Где начинать понятно - обработчик оного события. Ну и первое на что обратить внимание какой метод автоматического управления пользуется и пользуется ли воообще. Если течет то одно из трех - либо там все на полном ручнике и где то delete забыли/потеряли по экскепшину, либо где то жесткая ссылка вместо слабой в массив ссылок запихивается если на стандартных смартпоинтерах, либо экскепшин где то в конструкторе который перехватывается выше но при этом распределенное не чистится. При других вариантах автомата (коих может быть вагон и маленькая тележка) смотреть нужно на сам автомат.
0
 Аватар для weterok
36 / 28 / 9
Регистрация: 11.11.2018
Сообщений: 163
30.11.2018, 18:37  [ТС]
а если снимки памяти делать и их сравнивать до и после метода с помощью getrusage()?

Добавлено через 1 минуту
потому что на глаз не определишь где утечка. это как иголку в стоге сена искать. код большой.

Добавлено через 41 секунду
код написан на Qt
0
725 / 224 / 73
Регистрация: 01.03.2011
Сообщений: 643
30.11.2018, 19:24
ИМХО getrusage() особо не поможет, т.к. показывает пик, а не текущую ситуацию.
Если сборка или запуск с внешними аллокаторам не приемлема, можно попытаться последить за процессом "руками"
сохраняем /proc/$PID/smaps до "события" и после, сравниваем, смотрим какой блок вырос, с помощью gdb делаем дамп памяти нужного региона и по каким-то признакам (строки, сигнатуры, итп) пытаемся понять что там лишнего. А дальше, как сказали выше в - смотреть код.
1
 Аватар для weterok
36 / 28 / 9
Регистрация: 11.11.2018
Сообщений: 163
30.11.2018, 21:10  [ТС]
C++
1
getrusage(RUSAGE_SELF, usage);
Но я делал так, и
C++
1
long   ru_maxrss;        /* maximum resident set size */
вот эта опция мне выводила количество памяти, которое менялось до и после вызова функции

Добавлено через 27 минут
http://appcrawler.com/wordpres... getrusage/
В общем нашел пример, где getrusage() в онлайн режиме определяет количество выделенной памяти

Добавлено через 6 минут
Но если есть еще способы, то пишите. Проблема не решена.
0
153 / 148 / 66
Регистрация: 20.02.2014
Сообщений: 556
07.12.2018, 12:17
Лучший ответ Сообщение было отмечено weterok как решение

Решение

weterok, как вариант dmalloc
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2018, 12:17
Помогаю со студенческими работами здесь

Crt detected that the application wrote to memory
Программа заключается в том, что надо через структуру передать количество студентов, записать индекс и оценку каждого из них, отсортировать...

Ошибка 2064, ссылающаяся на библиотеку memory
Вопрос адресуется тем, кто хорошо знает библиотеку memory, или же сталкивался с подобной ошибкой. Почему именно так: проект довольно...

Ошибки 2064 и 2664, ссылающиеся на библиотеку memory
Здравствуйте, программисты! Преобразовала проект на Java с сырыми указателями на с++ с использованием shared_ptr. Выдает мне 6 ошибок,...

Memory leak
Здравствуйте! Люди, очень интересная проблема возникла у моего друга. Программа считывает с файла данные точек и фэйсов и затем рисует...

Memory Leak in IE 5.0
Утечка памяти до беспамятства системы :) Замечали такое за ИЕ? Может знает кто в чем дело?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru