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.rai是什么意思
灶神之妻
Error: A fatal exception has occurred. Program will exit.
bcos2.是系统参数(overcommit_memory和overcommit_ratio)配置的问题
pittsburgh3.查看系统内存分配状态
[root@localhost local]# grep -i commit /proc/meminfo
CommitLimit: 15550904 kB
Committed_AS: 15098404 kBsarah怎么读英语
看到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。
invalidate
0,表⽰内核将检查是否有⾜够的可⽤内存供应⽤进程使⽤;如果有⾜够的可⽤内存,内存申请允许;否则,内存申请失败,并把错误返回给应⽤进程。
1,表⽰内核允许分配所有的物理内存,⽽不管当前的内存状态如何。
drillmyhole 2,表⽰内核允许分配超过所有物理内存和交换空间总和的内存
5. 解决办法
immobile
将vm.overcommit_memory 设为1即可
tvu
有三种⽅式修改内核参数,但要有root权限:
1)编辑/f ,改vm.overcommit_memory=1,然后sysctl -p 使配置⽂件⽣效
2)sysctl vm.overcommit_memory=1
3)echo 1 > /proc/sys/vm/overcommit_memory