Я использую CentOS 7, и я запускаю приложение C++. Недавно я переключился на более новую версию библиотеки, которую приложение использовало для различных функций API MySQL C. Но после интеграции новой библиотеки я увидел огромное увеличение использования памяти в программе, то есть приложение выйдет из строя, если его осталось работать больше дня или двух. Точно так же происходит, что использование памяти для приложения начинает увеличиваться до того момента, когда одно приложение использует 74,9% общей памяти системы, а затем оно принудительно отключается системой.Проверка всех видов использования памяти во время выполнения приложения C++
Есть ли способ отслеживать использование памяти для всего приложения, включая статические переменные. Я уже пробовал инструмент valgrind Massif.
Может ли кто-нибудь сказать мне, какие могут быть возможные причины увеличения использования памяти или какие-либо инструменты, которые могут дать мне глубокое понимание того, как выделяется память (как статическая, так и динамическая). Есть ли какой-нибудь инструмент, который может рассказать нам о распределении памяти для приложения C++, работающего в среде Linux?
Заранее благодарен!
Valgrind должен быть правильным инструментом для анализа этой проблемы, которая, по-видимому, является классической утечкой памяти. –
@ Torbjörn, я также проверил с valgrind, а разница в распределении памяти в разделе HEAP SUMMARY, который появляется для выполнения приложения, составляет около 1 ГБ для продолжительности работы около 10 минут. – Abhinav
Вы также можете переопределить глобальный новый оператор и удалить операторы. Я сделал это раньше, чтобы сохранить кеш с выделенными ячейками памяти, которые еще не удалены. Затем отдельный поток, который печатает эту информацию каждые несколько минут. – Dennis