Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit
作者:mmseoamin日期:2023-12-14

部署项目到服务器tomcat报错:服务器内存不足

  • 背景
  • 解决
  • 采用上面的方法3

    背景

    部署项目到服务器tomcat报错如下:

    16-May-2023 11:46:21.789 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.74]
    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000fb400000, 71303168, 0) failed; error='Cannot allocate memory' (errno=12)
    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 71303168 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # /opt/xlsofts/apache-tomcat-9.0.74/bin/hs_err_pid25828.log
    

    大意:就是服务器的物理内存不足。

    解决

    1. 扩大服务器内存
    2. 关闭服务器上不必要或不重要的程序/服务
    3. 降低tomcat对JVM内存的需求:重新分配(分低点,具体多少根据实际情况来定)

    采用上面的方法3

    这种方法不用变更服务器的物理配置,也不用停止服务器上其他的程序或服务,只关注tomcat及部署在tomcat上项目

    1. 调整tomca中对jvm内存的配置:

      -Xms128m 表示JVM最小内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。这里配置的是128m,数值可根据具体情况改变

      -Xmx128m 设置JVM最大可用内存。这里配置的是128m,数值可根据具体情况改变

    编辑 tomcat的bin目录下的catalina.sh文件,增加-Xms128m 及 -Xmx128m

    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit,在这里插入图片描述,第1张

    如何查看tomcat的JVM内存分配情况??如何登录tomcat控制台并查看tomcat的JVM内存分配情况

    • 验证,可正常启动,无报错。完成!

    • 附:以war包方式部署的时候可能会涉及启动两次项目的情况Tomcat server.xml Host Context配置