有兩臺新配的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/