Hi, I try to do a performance test of my application. I submit a huge number of messages to my application that consist of several message queues and measure a system throughput. I use difference size of messages 10 bytes, 100 bytes and 1 Kbytes in this test.
The problem is that when I run 1 Kbytes - 1,000,000 messages. I found "java.lang.OutOfMemoryError: Java heap space". Because I set memory limit = 100 MB and JVM option -Xmx2600m (~2.5GB), I think the OOM problem should not be occured. Below is the exception message: Feb 21, 2010 11:05:44 PM org.apache.activemq.broker.region.Queue iterate SEVERE: Failed to page in more queue messages java.lang.OutOfMemoryError: Java heap space at java.util.ArrayList.ensureCapacity(ArrayList.java:169) at java.util.ArrayList.add(ArrayList.java:351) at org.apache.activemq.broker.region.Queue.doDispatch(Queue.java:1497) at org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:1578) at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1247) at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Feb 21, 2010 11:05:46 PM org.apache.activemq.broker.TransportConnection serviceException WARNING: Async error occurred: java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space at java.util.concurrent.CopyOnWriteArrayList.remove(CopyOnWriteArrayList.java:438) at org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:270) at org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:382) at org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:490) at org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194) at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:75) at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:75) at org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:75) at org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85) at org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:449) at org.apache.activemq.command.MessageAck.visit(MessageAck.java:205) at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:297) at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:175) at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116) at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68) at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:207) at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122) at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) I use the lastest snapshot - Activemq 5.4 -, Non-persistent deliverly and asyncSend = true. In addition, I try to reduce prefetch limit from the default value - 1000 - to 10. It sometime can solve this problem. I don't understand why. Can anyone has an idea to solve this problem? (I also attach memory usage and threads information that I capture from Jmx console. You can see the memory increase until it reach maximum size and then the OOM error is occure) http://old.nabble.com/file/p27677296/memory.png memory.png http://old.nabble.com/file/p27677296/threads.png threads.png -- View this message in context: http://old.nabble.com/Problem%3A-Failed-to-page-in-more-queue-messages-tp27677296p27677296.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.