启动java程序报错:
    OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006c0000000, 2147483648, 0) failed; error=’Cannot allocate memory’ (errno=12)
    image.png

    查看内存情况:
    image.png

    明明显示还有内存但是就是启动报错。

    解决方法:
    临时更改: echo 1 > /proc/sys/vm/overcommit_memory 然后重启服务
    永久更改: 编辑 /etc/sysctl.conf,修改参数 vm.overcommit_memory = 1,重启服务器或者用户重新登录

    内核参数overcommit_memory介绍:

    它是 内存分配策略

    可选值:0、1、2。
    0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
    1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
    2, 表示内核允许分配超过所有物理内存和交换空间总和的内存