Обновить

Комментарии 5

Спасибо, это очень интересно.
Непонятно вот что: почему в дампе памяти этой проблемы не было видно?
Ведь массив-то этот в памяти хранится.


Некоторое время назад я столкнулся с похожей проблемой на веблоджике — тоже память растёт, дамп снимаешь, смотришь — ничего интересного в нём нет, объём дампа 10 гигов, а в EclipseMemoryAnalyser анализируется 700 метров.
Так и не разобрался.


И на .Net недавно похожая заморочка была — тоже утечка, размер дампа соответствует памяти, а в dotMemory откроешь — а внутри виден один гиг и в нём гигантской утечки не видать. Увидели малкнькую утечку, исправили её — большая тоже ушла.

В дампе массив с потоками был, но дамп большой, информации в нем много, а массив не особо выделялся на фоне остальных данных, поэтому мы и не заметили проблемы.

Насчет EclipseMemoryAnalyser и dotMemory, вероятно, проблема из той же серии, что и в случае с tracemalloc, который показывает только память, выделенную самим Python, но ничего не знает о распределении памяти в С и С++.

Ттак а у вас разве не этот массив всю память пожирал?


Про c-шный код верно.

Да, по сути он, но при анализе дампа его не заметили.
Не заметили из-за того, что массив состоит из объектов, которые содержат в себе кучу сишной начинки, которая занимает память. Поэтому сам массив относительно небольшой по сравнению с остальными структурами, а память была съедена теми объектами, ссылки на которые он содержал.

О!
Спасибо за ликбез

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
saby.ru
Дата регистрации
Дата основания
Численность
5 001–10 000 человек
Местоположение
Россия