1) Please use SimpleByteBufferAllocator: ByteBuffer.setAllocator(new SimpleByteBufferAllocator()); ByteBuffer.setUseDirectBuffer(false);
2) Please make sure all socket connections were closed. 3) Did you diable ThreadModel as described in: http://mina.apache.org/configuring-thread-model.html HTH, Trustin On 10/16/07, chihiro <[EMAIL PROTECTED]> wrote: > > I am using MINA 1.1.2 snapshot in an OSGi environment. > OS: debian > uname -r: 2.6.15-1-686-smp > JVM version is 1.5.0_06-b05 > > In a bundle that contains client code, the class Channel's lifecycle > is in sync with the bundle lifecycle. That is, if I stop the bundle, then > Channel's dispose() method is called. > > e.g. > > class Channel > { > ExecutorService m_executor; > SocketConnector m_connector; > > public Channel( Executor executor, ... ) > { > m_executor = executor; > m_connector = new SocketConnector( > Runtime.getRuntime().availableProcessors() + 1, executor ); > ... etc ... > } > > public void dispose() > { > m_executor.shutdownNow(); > m_connector.setWorkerTimeout( 0 ); > } > } > > But I have noticed that when I stopped the bundle, some SocketConnector > related threads > are still alive. Could someone verify that my dispose() method is sufficient > ? Perhaps I'm missing something. > > Here are a snippet from a thread dump of the OSGi container (with the bundle > stopped):- > > ==> This PooledByteBufferExpirer-0 never seems to die. But I think it's > benign and would only > die during container restart. > > Thread 8086: (state = BLOCKED) > - java.lang.Thread.sleep(long) @bci=0 (Interpreted frame) > - org.apache.mina.common.PooledByteBufferAllocator$Expirer.run() @bci=10, > line=249 (Compiled frame) > > ==> This refers to SocketConnectorIoProcessor-3.0. It only dies if the > server is shutdowned. > > Thread 13366: (state = IN_NATIVE) > - sun.nio.ch.PollArrayWrapper.poll0(long, int, long) @bci=0 (Compiled > frame; information may be imprecise) > - sun.nio.ch.PollArrayWrapper.poll(int, int, long) @bci=13, line=100 > (Compiled frame) > - sun.nio.ch.SelectorImpl.lockAndDoSelect(long) @bci=37, line=69 (Compiled > frame) > - sun.nio.ch.SelectorImpl.select(long) @bci=30, line=80 (Compiled frame) > - org.apache.mina.util.NamePreservingRunnable.run() @bci=11, line=39 > (Interpreted frame) > - > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(java.lang.Runnable) > @bci=44, line=650 (Interpreted frame) > - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=28, line=675 > (Interpreted frame) > - java.lang.Thread.run() @bci=11, line=595 (Interpreted frame) > > > ==> This refers to AnonymousIoService-?. And I have tons of them hanging > around. > > Thread 8091: (state = BLOCKED) > - sun.misc.Unsafe.park(boolean, long) @bci=0 (Interpreted frame) > - java.util.concurrent.locks.LockSupport.park() @bci=5, line=118 > (Interpreted frame) > - > java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() > @bci=41, line=1767 (Interpreted frame) > - java.util.concurrent.LinkedBlockingQueue.take() @bci=29, line=359 > (Interpreted frame) > - java.util.concurrent.ThreadPoolExecutor.getTask() @bci=47, line=470 > (Interpreted frame) > - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=18, line=674 > (Interpreted frame) > - java.lang.Thread.run() @bci=11, line=595 (Interpreted frame) > > Thanks > > chihiro > -- > View this message in context: > http://www.nabble.com/How-to-terminate-all-threads-in-SocketConnector---tf4631786s16868.html#a13226239 > Sent from the Apache MINA Support Forum mailing list archive at Nabble.com. > > -- what we call human nature is actually human habit -- http://gleamynode.net/ -- PGP Key ID: 0x0255ECA6