[jboss-user] [JBossMQ] - UIL2.SocketManager Threads accumulate until crash
MarcusDidiusFalco
do-not-reply at jboss.com
Wed Aug 5 05:02:44 EDT 2009
JBoss 4.2.2 GA
Hallo,
I have to fix an application which heavily relies on JMS.
It crashes after it has received a number of messages, because of a
java.lang.OutOfMemoryError: unable to create new native thread
A thread dump and jconsole show that
Thread: UIL2.SocketManager.ReadTask#259 client=127.0.0.1:8093 : priority:5, demon:true, threadId:576, threadState:RUNNABLE, lockName:null
| java.net.SocketInputStream.socketRead0(Native Method)
| java.net.SocketInputStream.read(SocketInputStream.java:129)
| java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
| java.io.BufferedInputStream.read(BufferedInputStream.java:235)
| org.jboss.util.stream.NotifyingBufferedInputStream.read(NotifyingBufferedInputStream.java:79)
| java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2196)
| java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2376)
| java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2443)
| java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2515)
| java.io.ObjectInputStream$BlockDataInputStream.readByte(ObjectInputStream.java:2664)
| java.io.ObjectInputStream.readByte(ObjectInputStream.java:875)
| org.jboss.mq.il.uil2.SocketManager$ReadTask.run(SocketManager.java:340)
| java.lang.Thread.run(Thread.java:595)
|
| Thread: UIL2.SocketManager.WriteTask#260 client=127.0.0.1:8093 : priority:5, demon:true, threadId:577, threadState:TIMED_WAITING, lockName:java.lang.Object at 3380c5
| java.lang.Object.wait(Native Method)
| EDU.oswego.cs.dl.util.concurrent.LinkedQueue.poll(LinkedQueue.java:170)
| org.jboss.mq.il.uil2.SocketManager$WriteTask.run(SocketManager.java:551)
| java.lang.Thread.run(Thread.java:595)
Threads accumulate.
If have already tried to identify all the points where JMS messages are send in the application and made sure that close() is called on sender, session and connection.
However the threads still accumulate.
What would be the best way to further analyse this? Is there a possibility to exactly find out which of my classes starts those threads which do not terminate?
Thanks,
Hans
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4248059#4248059
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4248059
More information about the jboss-user
mailing list