Hi, I'm having a similar issue: using activeme-cpp 3.1.1, there is a large memory leak when sending text messages. Here's a code snippet:
Here's the setup in my run method: { // Create a ConnectionFactory auto_ptr<ConnectionFactory> connectionFactory( ConnectionFactory::createCMSConnectionFactory( brokerURI ) ); // Create a Connection connection = connectionFactory->createConnection(); connection->start(); // Create a Session session = connection->createSession( Session::AUTO_ACKNOWLEDGE ); // Create the destination destination = session->createTopic( topicName ); // Create a MessageProducer from the Session to the Topic or Queue producer = session->createProducer( destination ); producer->setDeliveryMode( DeliveryMode::NON_PERSISTENT ); // Wait until the caller tells us we're done. doneLatch.await(); } void Producer::sendMessage( const std::string& messageArg) { TextMessage* message = session->createTextMessage( messageArg ); producer->setTimeToLive( 10000 ); producer->send( message ); delete message; } // End of sendMessage() If I comment out the producer->send() line, no leak. Any help would be appreciated! Thanks. Timothy Bish wrote: > > On Fri, 2010-02-26 at 07:14 -0800, opernas wrote: >> Version is 3.1.0 >> > Please give 3.1.1 a try as there were several fixes in that release for > memory leaks. > > Regards > > >> >> Timothy Bish wrote: >> > >> > On Fri, 2010-02-26 at 03:45 -0800, opernas wrote: >> >> >> >> Like I said, this issue occurred with my app but in SimpleProducer.cpp >> >> sample too. If you take SimpleProducer.cpp and put DeliverMode flag to >> >> PERSISTENT (instead of NON_PERSISTENT). >> >> >> >> ==3085== 160 bytes in 20 blocks are definitely lost in loss record 27 >> of >> >> 40 >> >> >> >> ==3085== at 0x40253C5: operator new(unsigned int) >> >> (vg_replace_malloc.c:214) >> >> >> >> >> >> ==3085== by 0x4313A16: >> >> activemq::core::ActiveMQSession::send(cms::Message*, >> >> activemq::core::ActiveMQProducer*, activemq::util::Usage*) >> (Pointer.h:45) >> >> ==3085== by 0x430843E: >> >> activemq::core::ActiveMQProducer::send(cms::Destination const*, >> >> cms::Message*, int, int, long long) (ActiveMQProducer.cpp:197) >> >> >> >> ==3085== by 0x43065F6: >> >> activemq::core::ActiveMQProducer::send(cms::Destination const*, >> >> cms::Message*) (ActiveMQProducer.cpp:134) >> >> >> >> ==3085== by 0x43074FA: >> >> activemq::core::ActiveMQProducer::send(cms::Message*) >> >> (ActiveMQProducer.cpp:102) >> >> >> >> ==3085== by 0x8049F4D: SimpleProducer::run() (prueba.cpp:126) >> >> >> >> >> >> ==3085== by 0x804928A: main (prueba.cpp:227) >> >> >> >> >> >> ==3085== LEAK SUMMARY: >> >> ==3085== definitely lost: 7,280 bytes in 40 blocks >> >> ==3085== indirectly lost: 10,406 bytes in 468 blocks >> >> ==3085== possibly lost: 784 bytes in 6 blocks >> >> ==3085== still reachable: 28 bytes in 1 blocks >> >> ==3085== suppressed: 0 bytes in 0 blocks >> >> >> >> Is in the producer->send() call... but I dont know if I've some >> mistake, >> >> or >> >> if a put PERSISTENT, i need to do something else... i've tried >> different >> >> ackwnoledge methods, but i've still loosing memory. >> >> >> >> >> > >> > It would help to know the version of the client you are using. The >> most >> > recent 3.1.1 release has several memory and resource leak fixes in it. >> > >> > Regards >> > >> > >> > -- >> > Tim Bish >> > >> > Open Source Integration: http://fusesource.com >> > ActiveMQ in Action: http://www.manning.com/snyder/ >> > >> > Follow me on Twitter: http://twitter.com/tabish121 >> > My Blog: http://timbish.blogspot.com/ >> > >> > >> > >> > > -- > Tim Bish > > Open Source Integration: http://fusesource.com > ActiveMQ in Action: http://www.manning.com/snyder/ > > Follow me on Twitter: http://twitter.com/tabish121 > My Blog: http://timbish.blogspot.com/ > > > -- View this message in context: http://old.nabble.com/ActiveMQ-CPP%3A-memory-leak-with-persistent-sendings--tp27716173p27872774.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.