You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Andrew Loucas <an...@outlook.com> on 2016/05/05 09:02:43 UTC
Artemis 1.2 - possible mem leak in Management API (via JMS)
Hi,I'm using Artemis 1.2.0 with an embedded broker and I'm following the documented code under "Using Management Via JMS" so I have this to get the message count:
try ( QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); ) { Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management"); QueueRequestor requestor = new QueueRequestor(session, managementQueue); Message message = session.createTextMessage(); JMSManagementHelper.putAttribute(message, "jms.queue.exampleQueue", "messageCount"); Message reply = requestor.request(message); requestor.close(); return (int) (Integer) JMSManagementHelper.getResult(reply); } catch (Exception e) { throw propagate(e); }
After introducing this code I would eventually get an OOM in my app, profiling revealed certain instances were going up each time it was called and never went down after GC, e.g.:
org.apache.activemq.artemis.utils.LinkedListImplorg.apache.activemq.artemis.utils.LinkedListImpl$Nodeorg.apache.activemq.artemis.utils.LinkedListImpl$Iterator
I do not see this behaviour with other code reading and writing to queues in my app. Let me know if you need more details to investigate.
Thanks,Andy
Re: Artemis 1.2 - possible mem leak in Management API (via JMS)
Posted by Justin Bertram <jb...@apache.com>.
Can you provide a test-case which generates an OOME after numerous calls like this. I've tried and I can't.
Justin
----- Original Message -----
From: "Andrew Loucas" <an...@outlook.com>
To: users@activemq.apache.org
Sent: Thursday, May 5, 2016 4:02:43 AM
Subject: Artemis 1.2 - possible mem leak in Management API (via JMS)
Hi,I'm using Artemis 1.2.0 with an embedded broker and I'm following the documented code under "Using Management Via JMS" so I have this to get the message count:
try ( QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); ) { Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management"); QueueRequestor requestor = new QueueRequestor(session, managementQueue); Message message = session.createTextMessage(); JMSManagementHelper.putAttribute(message, "jms.queue.exampleQueue", "messageCount"); Message reply = requestor.request(message); requestor.close(); return (int) (Integer) JMSManagementHelper.getResult(reply); } catch (Exception e) { throw propagate(e); }
After introducing this code I would eventually get an OOM in my app, profiling revealed certain instances were going up each time it was called and never went down after GC, e.g.:
org.apache.activemq.artemis.utils.LinkedListImplorg.apache.activemq.artemis.utils.LinkedListImpl$Nodeorg.apache.activemq.artemis.utils.LinkedListImpl$Iterator
I do not see this behaviour with other code reading and writing to queues in my app. Let me know if you need more details to investigate.
Thanks,Andy