You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Christian Warmuth (JIRA)" <ji...@apache.org> on 2010/02/26 16:08:41 UTC

[jira] Closed: (AMQCPP-289) decaf.lang.Thread doesn't free memory when phtreads used

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

Christian Warmuth closed AMQCPP-289.
------------------------------------

       Resolution: Fixed
    Fix Version/s: 3.1.1

With Version 3.1.1 everything works. Thanks.

> decaf.lang.Thread doesn't free memory when phtreads used
> --------------------------------------------------------
>
>                 Key: AMQCPP-289
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-289
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: Decaf
>    Affects Versions: 3.1
>         Environment: Linux Ubuntu 9.10 
>            Reporter: Christian Warmuth
>            Assignee: Timothy Bish
>             Fix For: 3.1.1
>
>
> If you run the following program:
> int main (int argc, char *argv[])
> {
>   
>    ConnectionFactory* connectionFactory;
>    Connection *connection;
>    activemq::library::ActiveMQCPP::initializeLibrary();
>     
>    std::string brokerURI =
>         "tcp://127.1.0.1:61616"
>         "?wireFormat=openwire";
> 	
>    connectionFactory = ConnectionFactory::createCMSConnectionFactory( brokerURI );
>    for (int i=0;i<1000;i++)
>    {
>       connection = connectionFactory->createConnection();
>       connection->start();
>       connection->stop();
>       connection->close();
>       delete connection;
>       printf("Count %ld\r\n",i);
>    }
>      
>    delete connectionFactory;
>     
>    activemq::library::ActiveMQCPP::shutdownLibrary();
>    return 0;
> }
> the consumption of memory grows on every new connection, but the memory is never freed.
> After about 180 connections the maximum virtual memory (about 3GB on 32bit Linux) of the process is reached and its impossible
> to create a new thread for the client. I saw that the destructor of the Thread class is called, but the memory of the created threads
> is not freed.
> If I add the line:
> #ifdef HAVE_PTHREAD_H
>         pthread_detach(properties->handle);
> #endif
> to the destructor of de decaf/ang/Thread class the memory is freed after destroying the connection.
> This is a quick and dirty fix, but I think somewhat is going wrong here.

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