【发布时间】:2017-10-30 10:07:08
【问题描述】:
大家:
我的服务经常出现OOM Exception,错误信息如下:
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,swap内存是4G;
有人可以帮助我吗? 非常非常感谢!!!
【问题讨论】:
-
查找正在使用该内存的内容,看看是否无法优化...
-
这可能意味着您的服务器正在消耗大量内存,并且可能存在内存泄漏问题。拥有the JVM write a heapdump file on OOM 并使用 Eclipse MAT 之类的工具检查该文件。
-
当我启动服务时,通过“free -m”查看使用的内存,我发现服务器也有很多内存。
标签: java java-8 out-of-memory openjdk