В общем, сижу я, значит, работаю над одним проектом, все норм, никаких проблем. И тут случается. Программа начинает жрать память, как не в себя. Сначала чуть-чуть, потом все больше и больше. Думал, утечка где-то, начал логи писать, дебажить — ничего. Все вроде бы чистенько, никаких объектов не забываю освобождать, циклов нет.
И самое обидное, что проблема появлялась не всегда. Вроде бы запустил, все ок, а через час — бац, и система начинает тормозить. Перезапуск — и снова работает. А потом опять.
Я уже почти неделю бьюсь над этим. Грешил на сторонние библиотеки, на систему, на что угодно. Даже думал, что мой процессор какой-то бракованный.
А потом, совершенно случайно, когда уже почти отчаялся, я увидел одну мелочь. Один очень маленький, незаметный момент в коде, который касался обработки каких-то там внешних данных. Оказалось, что в одном очень редком случае, при определенных условиях, там создавался какой-то временный объект, который не освобождался. Вот прямо микроскопическая ошибка, которую без глубокого анализа и кучи логов было не найти. Я чуть не расплакался от счастья, когда исправил!
