linux申请内存失败,Linux 申请内存失败解决方法

在linux上部署项目的时候可能会遇到这么一个错误

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

错误原因毫无疑问就是分配内存的时候内存不足,但是使用free 命令去查看系统的内存占用却发现此时还有很多内存可用.

再使用 ulimit -a 发现内存也并没有被限制.

什么原因呢?

我们最终还是在RedHat上找到了答案,需要优化系统性能或者深入了解RedHat系列的可以去看看:

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/6/html/performance_tuning_guide/

这其实涉及到系统的内存的申请策略问题,程序在启动的时候会先去申请内存,尽管不一定都会用的到那么多.

如果申请时发现无法申请到足够的内存就会报此错误. 而我们看到的那么多的内存为什么申请不到呢? 答案就是被别的程序申请占用了,尽管这些内存没有实际用到,却也无法再让另外的程序进行申请.

我们可以使用以下命令查看内存申请和可用情况

#CommitLimit 表示系统可申请的总内存

#Committed_AS为当前已经申请的内存

[root@localhost vm]# cat /proc/meminfo | grep Commit

CommitLimit: 3112228 kB

Committed_AS: 907096 kB

如果确定内存确实够用的话我们就可以改变overcommit_memory这个参数的值来保证我们的程序可以正常启动

overcommit_memory

此参数决定是否接受超大内存请求的条件。这个参数有三个可能的值:

0 — 默

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值