我使用Netty3.2.4进行长连接,当服务器启动时,它工作正常,但几天后,服务器可能会显示OutOfMemoryError,详细日志信息是:
<Error> <HTTP> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@5cd7f9 - appName: 'perbank', name: 'perbank', context-path: '/perbank'] Root cause of ServletException.
java.lang.OutOfMemoryError
at sun.misc.Unsafe.allocateMemory(Native Method)
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:99)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:288)
at org.jboss.netty.channel.socket.nio.SocketSendBufferPool$Preallocation.<init>(SocketSendBufferPool.java:155)
at org.jboss.netty.channel.socket.nio.SocketSendBufferPool.<init>(SocketSendBufferPool.java:42)
Truncated. see log file for complete stacktrace
>
可能是 JVM 没有做 GC,也可能是因为网络不稳定,使用了很多 socket 连接,不知道为什么。