[ 
https://issues.apache.org/activemq/browse/AMQCPP-68?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nathan Mittler closed AMQCPP-68.
--------------------------------

    Resolution: Won't Fix

We are only going to be supporting the activemq-cpp client

> Memory Leak in Message transport / send / recieve C++ client
> ------------------------------------------------------------
>
>                 Key: AMQCPP-68
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-68
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: Other C++ Clients
>         Environment: Win XP, VC++ Version 8
>            Reporter: Tomas Lebovic
>            Priority: Critical
>
> There seems to be a memory leak in the message transport. If we take the 
> following simple code below and then monitor memory consumption we will see 
> it steadily go up. 
> <code>
> #include <exception>
> #include <iostream>
> #include <map>
> #include <string>
> #include <stdio.h>
> #include <cms/IConnection.hpp>
> #include <cms/IConnectionFactory.hpp>
> #include <activemq/ConnectionFactory.hpp>
> #include <activemq/Connection.hpp>
> #include <ppr/TraceException.hpp>
> #include <ppr/net/Uri.hpp>
> #include <ppr/util/ifr/p>
> using namespace apache::activemq;
> using namespace apache::ppr::net;
> class TestAsynchTopic :public IMessageListener
> {
> private:
> public:
>       void onMessage(p<IMessage> message)
>       {
>               p<IMapMessage> msg = p_dyncast<IMapMessage> (message) ;
>               printf("got %s\n",msg->getString("msg")->c_str());
>               msg = NULL;
>       }
> } ;
> char * bunk = "memory leak?";
> int main()
> {
>         TestAsynchTopic list1;
>  
>         p<Uri> uri = new Uri("tcp://localhost:61616");
>       p<ConnectionFactory> factory = new ConnectionFactory(uri);
>       p<ISession>    session  = NULL;
>         p<ITopic>           topic = NULL ;
>       p<IMessageConsumer> consumer1 = NULL;
>       p<IMapMessage>      message = NULL ;
>       p<IMessageProducer> producer = NULL ;
>       try
>       {
>               p<IConnection> connection  = factory->createConnection();
>               session= connection->createSession();
>       } 
>       catch(ConnectionException &e)
>       {       
>               printf("%s\n",e.what());
>       }
>     
>         topic = session->getTopic("memory.leak") ;
>         producer = session->createProducer(topic) ;
>       consumer1 = session->createConsumer(topic) ;
>       consumer1->setMessageListener( smartify(&list1) ) ;
>        while(1)
>       {
>               message = session->createMapMessage();
>               message->setString("msg", (char*)bunk);
>               producer->send(message);
>               message = NULL;
>       }
>         return 0;
> }
> </code>
> Now i haven't been using c++ api for a long time but i can't see any way to 
> destroy the messages other then letting them go out of scope or when refrence 
> count = 0. So if there is a way to destroy the messages after they are sent / 
> recieved please let me know.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to