Java HotSpot(TM)64位服务器VM警告

时间:2015-06-23 12:18:40

标签: java

我有一个tomcat作为我的网络服务器,它使用给定的错误自动停止 -

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f16a8405000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)

我需要弄明白实际发生了什么?什么警告意味着什么?

3 个答案:

答案 0 :(得分:38)

Java Runtime Environment没有足够的内存来继续。

本机内存分配(malloc)无法为提交保留内存分配xxxxx字节。

可能的原因:
    1.系统超出物理RAM或交换空间
    2.在32位模式下,已达到进程大小限制

可能的解决方案:
     1.减少系统上的内存负载
     2.增加物理内存或交换空间
     3.检查交换后备存储是否已满      4.在64位操作系统上使用64位Java      5.减少Java堆大小(-Xmx / -Xms)
     6.减少Java线程的数量
     7.减少Java线程堆栈大小(-Xss)
     8.使用-XX设置更大的代码缓存:ReservedCodeCacheSize =

   如果您使用的是JAVA-8,请参考:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize

答案 1 :(得分:12)

Java无法分配足够的内存,即它不是Java的堆限制,而是OS不再有可用于Java的内存。检查机器是否没有内存不足。 首先清理ram或增加ram然后检查是否存在内存不足错误然后增加堆大小:

-Xms128m min(堆大小)

-Xmx512m max(堆大小)

-XX:MaxPermSize max(烫发大小)

答案 2 :(得分:0)

Java 运行时环境的内存不足。

我遇到了如下所示的相同问题。

<块引用>

OpenJDK 64 位服务器 VM 警告:信息: os::commit_memory(0x00000000f80f7000, 20729856, 0) 失败; error='无法分配内存' (errno=12)

我使用以下步骤解决了这个问题。

有进程挂在他们在 /tmp 上访问过的文件

使用 lsof 来检查:

lsof | grep deleted

它将列出进程,现在您可以杀死那些将为您释放空间的进程。