2017-10-20 121 views
0

我老是感到catalina.out以下错误约5之后 - 第6小时的运转我的应用程序:本地MMAP错误

There is insufficient memory for the Java Runtime Environment to continue. 

Native memory allocation (mmap) failed to map 503226 bytes for committing reserved memory. 

An error report file with more information is saved as: 

/tmp/hs_err_pid1.log 

我使用Tomcat 8 AWS的Linux t2.medium实例中运行(通用) 。只有1个应用程序正在运行,根本没有其他应用程序。 这是什么问题?

这是一个完整pid log file

感谢

回答

0

这种情况发生在OS说,有可用的,当后来该内存无法分配虚拟内存。

我会确保你有足够的交换空间,并且你的JVM(这不仅仅是你的堆大小)足够小,以适应这个实例。

编辑:我可以看到

内存:4K页,物理4047964k(101228k免费),交换0K(0K免费)

这意味着你的机器只有4 GB的没有交换,而且它几乎已经没有了记忆。您或者需要减少内存使用量(虽然对于我来说不太明显)或者使用更多的内存,至少在您研究如何缩减消耗量之前。

+0

您正在使用大部分内存(3.8 GB),因此添加一些交换空间将有所帮助,可能就足够了。 –

+0

@Kayaman使用更大的实例。 4 GB这些天内存不是很多https://www.solid-run.com/product/cubox-i4x4/ –

+0

很奇怪,CMIIW,堆大小(如果没有配置)会默认为1GB,对吗?根据日志,使用了3.8GB内存,如果堆只占用了1GB,谁拿了2.8GB? JVM的哪一部分使用了它?还是JVM之外的另一个进程? – musicsquad