Ответ
MoKo 18.09.2013 13:06
Парсер может создавать утечки памяти, будучи запущен с каким-то длительным перерывом.
Если у программы на входе одни и те же данные, она отработает так же и на выходе будет тот же результат. :)
На что обратил бы внимание:
1. Кеширование. Точно у вас нет никакого кеширования (через ^cache или как-нибудь еще)?
2. Размер считываемых в память объектов. Обычно, когда работает парсерный код, соотношение heap_used и
122970880 - один к трем, у вас же они отличаются всего лишь на треть. Это косвенно говорит о том,
что аллоцируются довольно большие объемы памяти (что-то большое считывается с диска?)
И еще о дисковой активности. Это правда никак не влияет на потребляемую память, но часто влияет на общее время выполнения (но не на расход CPU процессом по rusage). Например если у вас при запуске измеряется размер у сотни картинок, то первый запуск будет медленным, а второй - на порядок более быстрым, поскольку требуемые данные уже будут скешированы в память OS.