大家:
我的服务经常发生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; 谁能帮帮我? 非常非常感谢!!!答案 0 :(得分:1)
使用像jvisualvm这样的分析工具,找出你的记忆用途。然后修复它或给你的JVM足够的内存。
答案 1 :(得分:0)
您可以使用 -XX选项运行应用程序:MaxDirectMemorySize = 55m
默认值为 ZERO (Java 7& 8中的默认值为0)