在使用 smartboot.socket
作为socket服务端进行开发时,项目中有多个服务端,在项目启动时,只有前两个服务端启动成功,后几个服务端启动失败,并报以下错误
Exception in thread "Thread-8" java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Unknown Source)
at java.nio.DirectByteBuffer.<init>(Unknown Source)
at java.nio.ByteBuffer.allocateDirect(Unknown Source)
at org.smartboot.socket.buffer.BufferPage.allocate0(BufferPage.java:54)
at org.smartboot.socket.buffer.BufferPage.<init>(BufferPage.java:42)
at org.smartboot.socket.buffer.BufferPagePool.<init>(BufferPagePool.java:24)
at org.smartboot.socket.transport.AioQuickServer.start0(AioQuickServer.java:151)
at org.smartboot.socket.transport.AioQuickServer.start(AioQuickServer.java:121)
at com.ruoyi.project.coal.socket.processor.XXXXXXProcessor.openXXXXXXServer(XXXXXXProcessor.java:109)
at com.ruoyi.project.coal.socket.processor.socketServer.lambda$start$0(socketServer.java:42)
at java.lang.Thread.run(Unknown Source)
使用的smartboot的版本如下
<dependency>
<groupId>org.smartboot.socket</groupId>
<artifactId>aio-core</artifactId>
<version>1.4.2</version>
</dependency>
aioQuickServer.setReadBufferSize(512);
设置小一点,发现并不能解决问题catalina.bat
文件,并在头部添加 set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M
,并未解决问题根据多次查找,点击 Tomcat8080w.exe
tomcat工具,修改Java的相关设置,将Initial memory pool
设置为512MB,将Maximum memory pool
设置为1024MB,成功解决问题
Tomcat java.lang.OutOfMemoryError: Direct buffer memory
原文:https://www.cnblogs.com/kikyoqiang/p/14514284.html