You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by PatrickVB <pa...@gmail.com> on 2010/06/28 09:37:59 UTC

Re: memory leak problem with ActiveMQ 5.1

Hi,

I know this thread is quite old. I'm getting the same error.
The JVM which is sending message to the broker is getting an OOM. 

I'm using 5.3.1. For message sending I use stream message.

Regards

Patrick



elihusmails wrote:
> 
> I am finally getting the chance to continue testing this and am still
> getting OutOfMemory errors on the JVM that is sending messages to the
> ActiveMQ server.  I have set the policy to
> <noSubscriptionRecoveryPolicy/> on the ActiveMQ server using the
> latest code in the trunk.
> 
> Anyone have any more ideas on how to prevent these OutOfMemory errors.
> 
> Thanks
> 
> On Thu, Oct 9, 2008 at 7:55 PM, Mark Webb <el...@gmail.com> wrote:
>> I have run across a memory leak that I have been able to reproduce.  I
>> am profiling the sample application in NetBeans and I believe that I
>> have traced the problem to
>> org.apache.activemq.openwire.v3.BaseDataStreamMarshaller.tightUnmarshalByteSequence(DataInput,
>> BooleanStream)
>>
>> The sample program is a very simple application that sends an object
>> that I wrote to ActiveMQ every 200ms.  In NetBeans I am using the
>> "Live Allocated Objects" view and approximately 80% of all objects are
>> byte[].  If I view the Allocation Call Tree, the first few methods in
>> the tree are:
>>
>> BaseDataStreamMarshaller.tightUnmarshalByteSequence(DataInput,
>> BooleanStream)
>>   org.apache.activemq.util.ByteArrayOutputStream.checkCapacity(int)
>>       org.apache.activemq.util.ByteArrayOutputStream.<init>
>>          java.lang.StringCoding$StringEncoder.encode(char[],int,int)
>>
>> The object that I am sending is a simple bean class and only contains
>> an int, String and byte[].
>>
>> I am using the base configuration for ActiveMQ.  All my sample
>> application does is call sendObject(Serializable) every 200ms.  Here
>> is the simple JMS library that I wrote:
>>
>> ------------- START --------------------------
>> public class JmsLib {
>>
>>    private TopicConnection connection;
>>    private Session session;
>>    private Topic destination;
>>    private MessageProducer producer;
>>    private MessageConsumer consumer;
>>
>>    public JmsLib( ActiveMQConnectionFactory connFactory, String dest
>> ) throws JMSException {
>>
>>        connection = connFactory.createTopicConnection();
>>        session = connection.createSession(false,
>> Session.AUTO_ACKNOWLEDGE);
>>        destination = session.createTopic( dest );
>>        producer = session.createProducer( destination );
>>        consumer = session.createConsumer( destination );
>>        connection.start();
>>    }
>>
>>    public void addMessageListener( MessageListener listener ) throws
>> JMSException{
>>        consumer.setMessageListener( listener );
>>    }
>>
>>    public void sendObject( Serializable object ) throws JMSException{
>>        ObjectMessage message = session.createObjectMessage( object );
>>        producer.send(message);
>>    }
>> }
>> --------------- END --------------------------
>>
>> Thanks for any help you may have...
>>
> 
> 

-- 
View this message in context: http://old.nabble.com/memory-leak-problem-with-ActiveMQ-5.1-tp19910141p29008506.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: memory leak problem with ActiveMQ 5.1

Posted by Mark <el...@gmail.com>.
Part of my problem I found was that I wrapped the parts of the JMS
library that I needed into my own library.  For each endpoint I was
creating a producer AND consumer regardless if I need both or not.
This was leading to the producer/consumer eating up memory by creating
objects that I did not need or ever use.


On Mon, Jun 28, 2010 at 4:31 AM, Gary Tully <ga...@gmail.com> wrote:
> Maybe some of the following options are relevant
> http://activemq.apache.org/javalangoutofmemory.html#java.lang.OutOfMemory-SpoolingMessagestoDisk
>
> On 28 June 2010 08:37, PatrickVB <pa...@gmail.com> wrote:
>
>>
>> Hi,
>>
>> I know this thread is quite old. I'm getting the same error.
>> The JVM which is sending message to the broker is getting an OOM.
>>
>> I'm using 5.3.1. For message sending I use stream message.
>>
>> Regards
>>
>> Patrick
>>
>>
>>
>> elihusmails wrote:
>> >
>> > I am finally getting the chance to continue testing this and am still
>> > getting OutOfMemory errors on the JVM that is sending messages to the
>> > ActiveMQ server.  I have set the policy to
>> > <noSubscriptionRecoveryPolicy/> on the ActiveMQ server using the
>> > latest code in the trunk.
>> >
>> > Anyone have any more ideas on how to prevent these OutOfMemory errors.
>> >
>> > Thanks
>> >
>> > On Thu, Oct 9, 2008 at 7:55 PM, Mark Webb <el...@gmail.com> wrote:
>> >> I have run across a memory leak that I have been able to reproduce.  I
>> >> am profiling the sample application in NetBeans and I believe that I
>> >> have traced the problem to
>> >>
>> org.apache.activemq.openwire.v3.BaseDataStreamMarshaller.tightUnmarshalByteSequence(DataInput,
>> >> BooleanStream)
>> >>
>> >> The sample program is a very simple application that sends an object
>> >> that I wrote to ActiveMQ every 200ms.  In NetBeans I am using the
>> >> "Live Allocated Objects" view and approximately 80% of all objects are
>> >> byte[].  If I view the Allocation Call Tree, the first few methods in
>> >> the tree are:
>> >>
>> >> BaseDataStreamMarshaller.tightUnmarshalByteSequence(DataInput,
>> >> BooleanStream)
>> >>   org.apache.activemq.util.ByteArrayOutputStream.checkCapacity(int)
>> >>       org.apache.activemq.util.ByteArrayOutputStream.<init>
>> >>          java.lang.StringCoding$StringEncoder.encode(char[],int,int)
>> >>
>> >> The object that I am sending is a simple bean class and only contains
>> >> an int, String and byte[].
>> >>
>> >> I am using the base configuration for ActiveMQ.  All my sample
>> >> application does is call sendObject(Serializable) every 200ms.  Here
>> >> is the simple JMS library that I wrote:
>> >>
>> >> ------------- START --------------------------
>> >> public class JmsLib {
>> >>
>> >>    private TopicConnection connection;
>> >>    private Session session;
>> >>    private Topic destination;
>> >>    private MessageProducer producer;
>> >>    private MessageConsumer consumer;
>> >>
>> >>    public JmsLib( ActiveMQConnectionFactory connFactory, String dest
>> >> ) throws JMSException {
>> >>
>> >>        connection = connFactory.createTopicConnection();
>> >>        session = connection.createSession(false,
>> >> Session.AUTO_ACKNOWLEDGE);
>> >>        destination = session.createTopic( dest );
>> >>        producer = session.createProducer( destination );
>> >>        consumer = session.createConsumer( destination );
>> >>        connection.start();
>> >>    }
>> >>
>> >>    public void addMessageListener( MessageListener listener ) throws
>> >> JMSException{
>> >>        consumer.setMessageListener( listener );
>> >>    }
>> >>
>> >>    public void sendObject( Serializable object ) throws JMSException{
>> >>        ObjectMessage message = session.createObjectMessage( object );
>> >>        producer.send(message);
>> >>    }
>> >> }
>> >> --------------- END --------------------------
>> >>
>> >> Thanks for any help you may have...
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://old.nabble.com/memory-leak-problem-with-ActiveMQ-5.1-tp19910141p29008506.html
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
>>
>
>
> --
> http://blog.garytully.com
>
> Open Source Integration
> http://fusesource.com
>

Re: memory leak problem with ActiveMQ 5.1

Posted by Gary Tully <ga...@gmail.com>.
Maybe some of the following options are relevant
http://activemq.apache.org/javalangoutofmemory.html#java.lang.OutOfMemory-SpoolingMessagestoDisk

On 28 June 2010 08:37, PatrickVB <pa...@gmail.com> wrote:

>
> Hi,
>
> I know this thread is quite old. I'm getting the same error.
> The JVM which is sending message to the broker is getting an OOM.
>
> I'm using 5.3.1. For message sending I use stream message.
>
> Regards
>
> Patrick
>
>
>
> elihusmails wrote:
> >
> > I am finally getting the chance to continue testing this and am still
> > getting OutOfMemory errors on the JVM that is sending messages to the
> > ActiveMQ server.  I have set the policy to
> > <noSubscriptionRecoveryPolicy/> on the ActiveMQ server using the
> > latest code in the trunk.
> >
> > Anyone have any more ideas on how to prevent these OutOfMemory errors.
> >
> > Thanks
> >
> > On Thu, Oct 9, 2008 at 7:55 PM, Mark Webb <el...@gmail.com> wrote:
> >> I have run across a memory leak that I have been able to reproduce.  I
> >> am profiling the sample application in NetBeans and I believe that I
> >> have traced the problem to
> >>
> org.apache.activemq.openwire.v3.BaseDataStreamMarshaller.tightUnmarshalByteSequence(DataInput,
> >> BooleanStream)
> >>
> >> The sample program is a very simple application that sends an object
> >> that I wrote to ActiveMQ every 200ms.  In NetBeans I am using the
> >> "Live Allocated Objects" view and approximately 80% of all objects are
> >> byte[].  If I view the Allocation Call Tree, the first few methods in
> >> the tree are:
> >>
> >> BaseDataStreamMarshaller.tightUnmarshalByteSequence(DataInput,
> >> BooleanStream)
> >>   org.apache.activemq.util.ByteArrayOutputStream.checkCapacity(int)
> >>       org.apache.activemq.util.ByteArrayOutputStream.<init>
> >>          java.lang.StringCoding$StringEncoder.encode(char[],int,int)
> >>
> >> The object that I am sending is a simple bean class and only contains
> >> an int, String and byte[].
> >>
> >> I am using the base configuration for ActiveMQ.  All my sample
> >> application does is call sendObject(Serializable) every 200ms.  Here
> >> is the simple JMS library that I wrote:
> >>
> >> ------------- START --------------------------
> >> public class JmsLib {
> >>
> >>    private TopicConnection connection;
> >>    private Session session;
> >>    private Topic destination;
> >>    private MessageProducer producer;
> >>    private MessageConsumer consumer;
> >>
> >>    public JmsLib( ActiveMQConnectionFactory connFactory, String dest
> >> ) throws JMSException {
> >>
> >>        connection = connFactory.createTopicConnection();
> >>        session = connection.createSession(false,
> >> Session.AUTO_ACKNOWLEDGE);
> >>        destination = session.createTopic( dest );
> >>        producer = session.createProducer( destination );
> >>        consumer = session.createConsumer( destination );
> >>        connection.start();
> >>    }
> >>
> >>    public void addMessageListener( MessageListener listener ) throws
> >> JMSException{
> >>        consumer.setMessageListener( listener );
> >>    }
> >>
> >>    public void sendObject( Serializable object ) throws JMSException{
> >>        ObjectMessage message = session.createObjectMessage( object );
> >>        producer.send(message);
> >>    }
> >> }
> >> --------------- END --------------------------
> >>
> >> Thanks for any help you may have...
> >>
> >
> >
>
> --
> View this message in context:
> http://old.nabble.com/memory-leak-problem-with-ActiveMQ-5.1-tp19910141p29008506.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>


-- 
http://blog.garytully.com

Open Source Integration
http://fusesource.com