Having an AMQP 1.0 consumer of a queue increases memory usage of qpidd by much more than having an AMQP 0-10 consumer - the difference is approx. 0.5MB.
This affects scalable usage of the broker, where having thousands of 1.0 consumers require gigabytes of memory.
Better test: have multiple consumers on the same AMQP connection (I can provide such program in case of interest).
Running such scenario under valgrind/massif showed the extra memory is consumed by:
->91.90% (143,361,792B) 0x5D544F1: qpid::broker::amqp::OutgoingFromQueue::OutgoingFromQueue(qpid::broker::Broker&, std::string const&, std::string const&, boost::shared_ptr<qpid::broker::Queue>, pn_link_t*, qpid::broker::amqp::Session&, qpid::sys::OutputControl&, qpid::broker::SubscriptionType, bool, bool) (Outgoing.h:57)
And really, when I changed in:
the "deliveries(5000)" to "deliveries(50)", memory consumption dramatically decreased.
I don't understand this part of code, but please make the "CircularArray<Record> deliveries(5000)" more memory efficient.