我正在使用simpleframework實現一個HTTP服務器,其中包含處理大型圖像(4m到8m)的HTTP服務器。SimpleFramework:OutOfMemoryError:直接緩衝區內存
我注意到一段時間後,應用程序拋出一個OutOfMemory異常並停止處理其他請求。 使用jconsole,我發現直接內存增加了,但它永遠不會被釋放。時引發的例外是這樣的:
2014/08/27 17:30:28 | Exception in thread "Dispatcher: Thread-17" java.lang.OutOfMemoryError: Direct buffer memory
2014/08/27 17:30:28 | at java.nio.Bits.reserveMemory(Unknown Source)
2014/08/27 17:30:28 | at java.nio.DirectByteBuffer.<init>(Unknown Source)
2014/08/27 17:30:28 | at java.nio.ByteBuffer.allocateDirect(Unknown Source)
2014/08/27 17:30:28 | at sun.nio.ch.Util.getTemporaryDirectBuffer(Unknown Source)
2014/08/27 17:30:28 | at sun.nio.ch.IOUtil.write(Unknown Source)
2014/08/27 17:30:28 | at sun.nio.ch.SocketChannelImpl.write(Unknown Source)
2014/08/27 17:30:28 | at org.simpleframework.transport.BufferWrapper.write(BufferWrapper.java:356)
我試圖增加直接存儲器大小(-XX:MaxDirectMemorySize)800米,但它只是推遲了內存不足的異常。
有沒有人有這個問題?有沒有什麼可以解除分配這個內存?
我在Windows Server 2003 x64盒子上使用了最新版本的simpleframework(5.1.6)。
最好的問候,
聖特爾莫西蒙斯
謝謝您的輸入。我嘗試了最新版本,但問題仍然存在(執行SocketBuffer.flush(...)時拋出異常)。還有什麼可以幫助解決這個錯誤? – 2014-08-29 14:09:17
簡單移動到github? – ollo 2014-09-04 11:47:57