Я уже писал, что я замерил память в запущенном приложении, в котором отправка сообщений не производилась (просто закоментировал код, который формирует сообщения).
Вы не хотите замечать, что у вас помимо отправки происходит еще и создание объектов сообщений, причем всех сразу.
А это минимум 24 байта на объект Event -> 24 * 5000000 = 120 Мб
Плюс указатели в очереди на эти объекты, на 32 битной платформе, еще 20 Мб.
На размещение этих объектов событий у ядра получена память (вы смотрите именно на нее), но после удаления всех объектов, память кучи может не возвращаться ядру, а использоваться для дальнейшего выделения.
Спасибо за мнение, но я вынужден возразить.
Во первых, если следовать Вашей логике, то при генерации сообщений в бесконечном цикле, объем используемой памяти должен стабилизироваться на конкретном значении, которое будет зависеть от скорости их обработки. Но по факту это не так, происходит постоянный прирост используемой памяти.
Во вторых, практически любой менеджер задач под линукс (я использовал htop), показывает объем реально занимаемой памяти и объем зарезервированной памяти. Так вот прирост отмечается именно в реально используемой. Отсюда я и сделал вывод об утечке.