Вам нужно копать дальше, чтобы выяснить, что утечка памяти.
Запустите ваше приложение под valgrind
, как только вы окажетесь в точке, в которой, как вы думаете, происходит утечка памяти, прервите выполнение, и valgrind
сообщит обо всех возможных утечках.Надеемся, что настоящая утечка должна выделяться, поскольку она будет большой и очевидной.
Другие вещи, которые можно попробовать, - это уменьшить HWM
до 1 для всех сокетов и посмотреть, если эторазница.Может случиться так, что утечка памяти - это просто ZeroMQ с использованием буферов (устанавливается HWM
).Linux не всегда будет возвращать память в кучу, если она будет освобождена, если она не нужна где-то еще.
Наконец, благодаря архитектуре ZeroMQ вы можете очень легко разделить ваше приложение на две части, тогда ваши PUB
и SUB
будутбыть отдельным и сузить утечку дальше.