В приложении используется 128 объектов QPixmap как составные части бесконечно длинной прокручиваемой вертикальной простыни. Каждый QPixmap формируется из QImage через QPixmap::convertFromImage() - однажды, при первом выводе на экран. Далее в paintEvent() отрисовываются уже готовые QPixmap-ы. Если юзер затусовался совсем далеко, начинают переиспользоваться QPIxmap-ы из начала списка. Таким образом, если юзер тусуется в какой-то окресности, он без особых затрат ЦП крутит готовые QPixmap-ы.
При этом в приложении QPixmap-ы создаются только однажды, далее их содержимое иногда меняется через QPixmap::convertFromImage(). Во время работы приложения, его показатели памяти VIRT, RES не меняются. В то же время, если прокручивать вышеуказанную простыню, иксы сильно жрут память, примерно по 1...2 MB в секунду. Известно, что QPixmap - класс, хранящий свои данные на любой ОС всегда «поближе к видеокарте», в линуксовой реализации это выделялка иксовых буферов и складывалка картинок туда, а потом выводилка этих буферов, поэтому получается быстро и дешёво. Но похоже я что-то должен делать, чтобы они освобождались? Необходимо прибивать QPixmap-ы, а простая их перерисовка гарантирует утечку памяти в исках?
После продолжительной работы приложения иксы отжирают под гигабайт и жрут дальше. Прибитие приложения приводит к резкому сокращению потребления памяти иксами.