赞
踩
我有一个tomcat作为我的网络服务器,由于给定的错误,它自动停止运行-
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f16a8405000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
我需要弄清楚实际发生了什么? 那警告是什么意思?
如何解决调用Runtime#exec()的" java.io.IOException:错误= 12,无法分配内存"的可能重复?
什么是操作系统? 它是否有足够的资源(RAM?)。在Linux上,请参见stackoverflow.com/questions/29250953/。
ubuntu 14.04 OS,16 GB服务器
我从apache运行java时遇到问题(类似错误)。 此处描述的修复程序。
没有足够的内存,Java运行时环境无法继续。
本机内存分配(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位服务器VM警告:忽略选项MaxPermSize
此答案是JVM生成的日志文件中所建议内容的复制/粘贴。 引用这个文件本来会更诚实...但是它起作用(我增加了机器(实际上是虚拟机)上的物理RAM数量)。 谢谢!
为什么要使用-Xms / -Xmx来减少(!!)Java堆空间,或者使用-Xss来减少Java线程堆栈空间,这是解决方案之一。 我希望必须改为增加其中一个值(或两个值)...
@Steffen减少最大堆空间会有所帮助的原因是,它限制了Java VM,以防止其请求的内存超过操作系统可用的内存。 导致该错误的情况是JVM正在请求操作系统没有的内存(这意味着JVM仍在其最大阈值以下)。
Java无法分配足够的内存,也就是说,不是Java的堆限制在起作用,而是OS没有更多的内存可分配给Java。检查机器内存是否未耗尽。
然后首先清理ram或增加ram,然后再次检查是否存在内存不足错误,然后增加堆大小:
-Xms128m最小值(堆大小)
-Xmx512m max(堆大小)
-XX:MaxPermSize max(烫发大小)
mastadminchat03 @ PRDMASTCHAT03:?$免费:总计= 14361104,使用:6188292,免费:8172812,共享:428,缓冲区= 57396,缓存= 1233592
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。