如何修复java8的内存不足错误

时间:2017-10-30 10:07:09

标签: java java-8 out-of-memory openjdk

大家:

我的服务经常发生OOM异常,错误信息如下:

    OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f3f6e360000, 65536, 1) 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 65536 bytes for committing reserved memory.

我的服务器的JDK版本:

    java -version
    openjdk version "1.8.0_121"
    OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
    OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

我服务器的内存信息:

  free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3951         515        3107           0         328        3197
    Swap:          4095        1067        3028

我的服务的启动shell是这样的:

    nohup java -Xmx2048m -Xms1024m -jar  myService.jar >nohup.out &

该服务在我的本地计算机上正常运行; 但是当我为我的云服务器部署服务时,错误已经发生!

我的本地电脑的内存是4G; 我的云服务器内存也是4G,交换内存是4G;

谁能帮帮我? 非常非常感谢!!!

2 个答案:

答案 0 :(得分:1)

使用像jvisualvm这样的分析工具,找出你的记忆用途。然后修复它或给你的JVM足够的内存。

答案 1 :(得分:0)

您可以使用 -XX选项运行应用程序:MaxDirectMemorySize = 55m

默认值为 ZERO (Java 7& 8中的默认值为0)

相关问题