Сегодня провел весь день, копаясь в
Помимо прочего, в коде содержалась конструкция типа
const char * name = obj->getName();
if (obj->isArrayElt()) {
name = obj->getParent()->getName();
idx = obj->getIndex();
}Фишка в том, что это была не протечка, и valgrind, запущенный на весь процесс от начала до конца, не жаловался - строки, возвращаемые из getName(), в конце концов[weasel words] зачищались, но никому не нужных уникальных строк вида "array[index]" это дело порождало , задирая пиковое потребление памяти до небес, столько, что можно было диву даться.
А потом уже одно к одному: оказалось, что хешировать по имени объекта в том месте было вообще необязательно. В результате к концу дня практически вписался в желаемые 4 Гб.