Maybe Direct buffer not released.
Direct buffer must explicit release.
so somewhere may check if direct buffer and set to null.

2007/7/21, mat <[EMAIL PROTECTED]>:

I captured the exception message.

org.apache.mina.common.support.DefaultExceptionMonitor exceptionCaught
Unexpected exception.
java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory
at java.nio.DirectByteBuffer.<init>
at java.nio.ByteBuffer.allocateDirect
at sun.nio.ch.Util.getTemporaryDirectBuffer
at sun.nio.ch.IOUtil.write
at sun.nio.ch.SocketChannelImpl.write
at org.apache.mina.transport.socket.nio.SocketIOProcessor.doFlush<
SocketIoProcessor.java:428>
at org.apache.mina.transport.socket.nio.SocketIOProcessor.doFlush<
SocketIoProcessor.java:366>
at org.apache.mina.transport.socket.nio.SocketIOProcessor.access$600<
SocketIoProcessor.java:44>
at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run<
SocketIoProcessor.java:509>
at org.apache.mina.util.NamePreservingRunnable.run<
NamePreservingRunnable.java:43>
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask
at java.util.concurrect.ThreadPoolExecutor$Worker.run
at java.lang.Thread.run


On 7/20/07, Luis Neves <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> mat wrote:
> > My server sometimes faced "OOM" problem. (I couldn't profile it since
> TPTP
> > crashed my server before OOM occured). I didn't see major memory leak
> when
> > profiling. Therefore, I believe OOM happens when READ or WRITE
operation
> > can't handle the incoming messages or outgoing messages. (However my
> > incoming messages normally 20 * 512bytes/sec, NOT too fast, right?).
> Last
> > time i saw my server memory usage is over 600MB in windows XP.
>
> Your code is broken ... the question is where. Mina can handle that
amount
> of
> messages without breaking a sweat.
> Do you have some kind of heavy processing in the receiving end that
delays
> the
> acceptance of messages?
>
> Did you try to use the ReadThrottleFilter?
> How are you doing you writes?
> A simple "iosession.write()" ?
> Did you try something like:
> WriteFuture wf = iosession.write();
> wf.join();
>
> Can we see the code of your Encoder/Decoder?
>
>
> --
> Luis Neves
>




--
向秦贤

Reply via email to