2012-07-25 3 views
0

У меня есть процесс, который работает в Solaris непрерывно. Использование памяти кучи процесса продолжает увеличиваться с течением времени, а когда оно превышает 4 ГБ, обрабатывает отвалы ядра.Анализ памяти кучи

Я попытался запустить процесс с Purify, но не смог найти код, который действительно утечки памяти.

Есть ли способ проанализировать, какой код отвечает за увеличение использования памяти кучи? Использование памяти кучи процесса увеличивается на 4 Мб или 8 Мб каждые 15 минут, и оно никогда не уменьшается.

Я использовал команду pmap, чтобы проверить использование памяти кучи процесса.

+0

Возможно, вы технически не просачиваете память, но на самом деле держите там какой-то указатель. Затем Purify подумает, что все в порядке. –

+0

@BoPersson Вы говорите об оборванных указателях? – cppcoder

+0

Нет, они не болтаются, если вы забыли удалить некоторые из них. Подобно созданию длинного списка и добавлению вещей, но некоторые из них никогда не удаляются. –

ответ

0

Я хотел бы войти в файл всех вызовов new и delete с местом, что они призваны выяснить, что при е new функции вызываются без correcsponding delete называется. Возможно, у вас есть круговые петли внутри кучи.

+0

Что такое круговые петли? – cppcoder

+0

@cppcoder - когда один объект указывает на другой объект и тот объект прямо или косвенно указывает на первый объект. –

Смежные вопросы