有两台新配的server内存128G,但在空余内存还有20G,page cache 60G时jps启动不了。提示java heap space,c中调用malloc没法分配5G以上的内存。很是奇怪。php
却是在网上有看到显卡没装风尚致使该问题的,最后换了一个带风扇的显卡就解决的:html
http://ubuntuforums.org/showthread.php?p=11649751前端
后来同事问了运帷,原来时系统參数overcommit_memory和overcommit_ratio搞的鬼。java
grep -i commit /proc/meminfopython
看到CommitLimit和Committed_As參数。linux
CommitLimit是一个内存分配上限,CommitLimit = 物理内存 * overcommit_ratio(默认50。即50%) + swap大小nginx
Committed_As是已经分配的内存大小。git
overcommit_memory參数就是控制分配内存可否够超过CommitLimit,默认是0,即启示式的overcommitting handle,会尽可能下降swap的使用,root可以分配比通常用户略多的内存。1表示赞成超过CommitLimit,2表示不一样意超过CommitLimit。web
原来这样的怀疑系统參数有问题的诊断通常就是比較和正常机器的sysctl.conf配置,下次要先比較避免武断下结论。。redis
參考: http://bkeep.blog.163.com/blog/static/12341429020123795827876/