After I use -XX:+HeapDumpOnOutOfMemoryError, finally I got "a java_pid2264.hprof" file(76M). How should I examine this file? Thanks.
On 8/7/07, Trustin Lee <[EMAIL PROTECTED]> wrote: > > On 8/7/07, mat <[EMAIL PROTECTED]> wrote: > > In ClientSessionHandler > > > > public void messageReceived(IoSession session, Object message) { > > // server only sends ResultMessage. otherwise, we will have to > > identify > > // its type using instanceof operator. > > ResultMessage rm = (ResultMessage) message; > > if (rm.isOk()) { > > // server returned OK code. > > // if received the result message which has the last sequence > > // number, > > if (rm.getSequence() == values.length - 1) { > > // print the sum and disconnect. > > //System.out.println("The sum: " + rm.getValue()); > > > > for (int i = 0; i < values.length; i++) { > > AddMessage m = new AddMessage(); > > m.setSequence(i); > > m.setValue(values[i]); > > session.write(m); > > } > > > > try > > { > > Thread.sleep(500); > > } catch (InterruptedException e) > > { > > // TODO Auto-generated catch block > > e.printStackTrace(); > > } > > > > //session.close(); > > //finished = true; > > } > > } else { > > // seever returned error code because of overflow, etc. > > SessionLog.warn(session, "Server error, disconnecting..."); > > session.close(); > > finished = true; > > } > > } > > Are you sure OOM is thrown on the server side? If so, please provide > HEAP DUMP generated by 'jmap' command. > > Your modification will lead to OOM on the client side, because any > received 'RESULT' message will not be processed until the current > messageReceived() event handler method returns. You write many > messages in messageReceived() and sleep 500 ms. MINA ExecutorFilter > will queue all received 'RESULT' messages in the internal queue, and > that will lead to OOM. To avoid this problem, please try to add > ReadThrottleFilter. > > If you didn't add any ExecutorFilter and set the thread model to > MANUAL, your client can also throw OOM because of too many write > request items in the internal write queue. But it's less risky than > when ExecutorFilter is employed. > > Trustin > -- > what we call human nature is actually human habit > -- > http://gleamynode.net/ > -- > PGP Key ID: 0x0255ECA6 >