Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OutOfMemoryError:jetty websocket中的32位直接缓冲内存_Java_Websocket_Jetty_32bit 64bit_Bytebuffer - Fatal编程技术网

Java OutOfMemoryError:jetty websocket中的32位直接缓冲内存

Java OutOfMemoryError:jetty websocket中的32位直接缓冲内存,java,websocket,jetty,32bit-64bit,bytebuffer,Java,Websocket,Jetty,32bit 64bit,Bytebuffer,我编写了一个应用程序,它使用jetty websocket连接到websocket服务器。当使用JDK 1.8.0(64位)时,一切似乎都很好,但当切换到JDK 1.8.0(32位)时,我会遇到以下错误: java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:693) at java.nio.DirectByteBuffer.<init>(Dire

我编写了一个应用程序,它使用jetty websocket连接到websocket服务器。当使用JDK 1.8.0(64位)时,一切似乎都很好,但当切换到JDK 1.8.0(32位)时,我会遇到以下错误:

java.lang.OutOfMemoryError: Direct buffer memory
   at java.nio.Bits.reserveMemory(Bits.java:693)
   at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
   at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)
   at org.eclipse.jetty.util.BufferUtil.allocateDirect(BufferUtil.java:133)
   at org.eclipse.jetty.io.ByteBufferPool.newByteBuffer(ByteBufferPool.java:61)
at org.eclipse.jetty.io.MappedByteBufferPool.acquire(MappedByteBufferPool.java:67)
at org.eclipse.jetty.websocket.common.io.FrameFlusher$Flusher.batch(FrameFlusher.java:65)
java.lang.OutOfMemoryError:直接缓冲内存
位于java.nio.Bits.reserveMemory(Bits.java:693)
位于java.nio.DirectByteBuffer。(DirectByteBuffer.java:123)
位于java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)
位于org.eclipse.jetty.util.BufferUtil.allocateDirect(BufferUtil.java:133)
位于org.eclipse.jetty.io.ByteBufferPool.newByteBuffer(ByteBufferPool.java:61)
位于org.eclipse.jetty.io.MappedByteBufferPool.acquire(MappedByteBufferPool.java:67)
位于org.eclipse.jetty.websocket.common.io.FrameFlusher$Flusher.batch(FrameFlusher.java:65)
我认为这与32位无法处理请求的字节缓冲区大小有关

因此,最简单的解决方案是切换到64位,但我们有很多客户使用32位系统:有更简单的解决方案吗

我已经尝试使用各种参数更改JVM设置
但是没有任何帮助。

我发现了问题:我将连接/连接的缓冲区大小设置得太高,因为我还传输文件。我将其设置为1024*1024*1024,这意味着1GB

我把它改为50MB(比我需要的多),它可以正常工作

session.getPolicy().setMaxBinaryMessageBufferSize(BUFFER_SIZE);
session.getPolicy().setMaxBinaryMessageSize(BUFFER_SIZE);
session.getPolicy().setMaxTextMessageBufferSize(BUFFER_SIZE);
session.getPolicy().setMaxTextMessageSize(BUFFER_SIZE);