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 <[EMAIL PROTECTED]> 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... >