• Tomcat java.lang.OutOfMemoryError: Direct buffer memory


    参考 Tomcat注册成系统服务并修改内存

    1、前言

    在使用 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>
    

    2、解决

    • 1、在网上多次查找相关解决方案,初步判断是socket的问题,并将aioQuickServer.setReadBufferSize(512);设置小一点,发现并不能解决问题
    • 2、根据报错初步判断是nio的问题,根据搜索结果,修改 catalina.bat 文件,并在头部添加 set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M ,并未解决问题

    3、结果

    根据多次查找,点击 Tomcat8080w.exe tomcat工具,修改Java的相关设置,将Initial memory pool设置为512MB,将Maximum memory pool设置为1024MB,成功解决问题

    4、疑问

    本次状况,从tomcat官网下载并安装的tomcat9,在开发人员使用的电脑上没有这个问题,在服务器也就是 Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHzIntel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz 的配置下报这个错误,原因真的太魔幻,初步判断是服务器性能奇葩

  • 相关阅读:
    Maven MicroTip: Get sources and Javadocs
    重定向标准流
    Unix: How to redirect stderr to stdout
    ruby doc
    1. 数据流重定向(stdin,stdout,stderr)
    jruby.org十多M的jar都是放到amazon s3上提供服务的
    试试rvm
    ruby doc
    Velocity用户手册中文版
    对Windows Mobile Timer不准的总结
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/14514284.html
Copyright © 2020-2023  润新知