activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Davies <rajdav...@gmail.com>
Subject Re: OutOfMemoryException in consumer
Date Thu, 25 Mar 2010 10:53:14 GMT
What happens if you run that code without the database piece ? Also - have you reduced your
prefetch to 100 ?  Are you receiving messages that aren't ObjectMessage types ?

On 25 Mar 2010, at 00:24, Milan Tomic wrote:

> 
> Memory consumed is growing slowly with a time... over 100 MB in one day and it never
comes back... there must be something wrong with my code below? do I need message.acknowledge()
or something?
> 
> TIA,
> Milan
> 
> 
> 
> 
> ----- Original Message ----
> From: Gary Tully <gary.tully@gmail.com>
> To: users@activemq.apache.org
> Sent: Wed, March 24, 2010 11:08:18 AM
> Subject: Re: OutOfMemoryException in consumer
> 
> try reducing the prefetch, you may be getting up to 1000 messages
> accumulated on your consumer:
> http://activemq.apache.org/what-is-the-prefetch-limit-for.html
> 
> Also have a read of:
> http://activemq.apache.org/javalangoutofmemory.html
> 
> On 24 March 2010 09:37, Milan Tomic <tomicmilan@yahoo.com> wrote:
> 
>> Is this consumer code OK? Sometimes I got OutOfMemoryException and I can't
>> find what resources I am not releasing...
>> 
>> while (true) {
>> try {
>>   Connection conn = oraPC.getConnection();
>>   Statement stmt = null;
>>   try {
>>     while ((message = mq_consumer.receive(10)) != null) {
>>       if (message instanceof ObjectMessage) {
>>         if (stmt == null)
>>           stmt = conn.createStatement();
>>           ObjectMessage msg = (ObjectMessage)message;
>>           String insert = getInsert(msg);
>>           stmt.addBatch(insert);
>>           sql += "\r\n"+insert;
>>         }
>>       }
>>       if (stmt != null) {
>>         stmt.executeBatch();
>>         conn.commit();
>>         mq_session.commit();
>>       }
>>     }
>>   } finally {
>>     if (stmt != null)
>>     try {
>>       stmt.close();
>>       stmt = null;
>>     } catch (SQLException e) {}
>>       if (conn != null)
>>       try {
>>         conn.close();
>>         conn = null;
>>       } catch (SQLException e) {}
>>     }
>>   } catch (Exception e) {
>>     e.printStackTrace();
>>     try { mq_session.rollback(); } catch (JMSException e1) {
>> e1.printStackTrace(); }
>>   }
>>   // Sleep here...
>> }
>> 
>> And this is how I init MQ session:
>> 
>> mq_session = mq_connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
>> 
>> 
>> 
>> 
>> 
> 
> 
> -- 
> http://blog.garytully.com
> 
> Open Source Integration
> http://fusesource.com
> 
> 
> 
> 


Mime
View raw message