If you are looking for a Open-Source profiler, then i have heard of JMP - Java Memory Profiler, but never used it. I have used JProfiler which has good features. JProfiler is not a open source, but does have a free evaluation copy. [ July 26, 2006: Message edited by: jaikiran pai ]
When I try to send too many messages (10k) to the JBoss messaging, I get the following exception. The Jprofiler shows that the maximum heap size has not been reached. I am using Oracle 9i as my persistent data store. The problem has been noticed even when using default Hypersonic database.
org.jboss.aop.NotFoundInDispatcherException: Object with oid: -2147483596 was not found in the Dispatcher at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:85) at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:126) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:842) at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:691) at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:443) at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:530) at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:253) at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163) at org.jboss.remoting.Client.invoke(Client.java:610) at org.jboss.remoting.Client.invoke(Client.java:602) .....
Thanks jaikiran. The problem seems to be because JBoss app server was running out of memory. Strange that I did not see any java.lang.OutofMemoryError.
One more issue. After finishing delivering messages to all durable subsribers I have noticed that JBOSS does not remove the messages from the database. I am using the default timeout. I am not wrong, once the JMS provider finishes delivering messages to all subscribers it is supposed to remove the messages from the datastore even if it is default timeout (= for ever). Otherwise datastore will simply grow big.