Couldnotrerveenoughspaceforobjectheap解决办法
Centos6.4 Jdk1.6
1.在终端输⼊Java命令报错
雷声的声音怎么形容[root@localhost local]# java
Error occurred during initialization of VM
Could not rerve enough space for object heap单丁
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
2.是系统参数(overcommit_memory和overcommit_ratio)配置的问题
3.查看系统内存分配状态
[root@localhost local]# grep -i commit /proc/meminfo
CommitLimit: 15550904 kB
培训评估Committed_AS: 15098404 kB
看到CommitLimit和Committed_As参数。
CommitLimit是⼀个内存分配上限,CommitLimit = 物理内存 * overcommit_ratio(默认50,即50%) + swap⼤⼩
Committed_As是已经分配的内存⼤⼩。
4.内核参数overcommit_memory
[root@localhost local]# cat /f | grep overcommit_memory
vm.overcommit_memory=2
它是内存分配策略鹦鹉鱼好养吗
可选值:0、1、2。
0,表⽰内核将检查是否有⾜够的可⽤内存供应⽤进程使⽤;如果有⾜够的可⽤内存,内存申请允许;否则,内存申请失败,并把错误返回给应⽤进程。《活着》读书笔记
1,表⽰内核允许分配所有的物理内存,⽽不管当前的内存状态如何。妙不可言是什么意思
2,表⽰内核允许分配超过所有物理内存和交换空间总和的内存
5. 解决办法
将vm.overcommit_memory 设为1即可
有三种⽅式修改内核参数,但要有root权限:
1)编辑/f ,改vm.overcommit_memory=1,然后sysctl -p 使配置⽂件⽣效贵吉祥
2)sysctl vm.overcommit_memory=1
3)echo 1 > /proc/sys/vm/overcommit_memory
小孩子掉头发