java hotspot server_Java HotSpot(TM)64位服务器VM警告

我有一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值