日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内存申请机制

發(fā)布時間:2025/3/15 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内存申请机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

在linux上部署項目的時候可能會遇到這么一個錯誤,明明有內存,但是報Segment fault的內存錯誤,是什么原因呢?

錯誤原因毫無疑問就是分配內存的時候內存不足,但是使用free 命令去查看系統(tǒng)的內存占用卻發(fā)現(xiàn)此時還有很多內存可用.
再使用 ulimit -a 發(fā)現(xiàn)內存也并沒有被限制.
我們最終還是在RedHat上找到了答案,需要優(yōu)化系統(tǒng)性能或者深入了解RedHat系列的可以去看看:
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/6/html/performance_tuning_guide/

這其實涉及到系統(tǒng)的內存的申請策略問題,程序在啟動的時候會先去申請內存,盡管不一定都會用的到那么多.
如果申請時發(fā)現(xiàn)無法申請到足夠的內存就會報此錯誤. 而我們看到的那么多的內存為什么申請不到呢? 答案就是被別的程序申請占用了,盡管這些內存沒有實際用到,卻也無法再讓另外的程序進行申請.
我們可以使用以下命令查看內存申請和可用情況

?

#CommitLimit 表示系統(tǒng)可申請的總內存 #Committed_AS為當前已經申請的內存 [root@localhost vm]# cat /proc/meminfo | grep Commit CommitLimit: 3112228 kB Committed_AS: 907096 kB

如果確定內存確實夠用的話我們就可以改變overcommit_memory這個參數(shù)的值來保證我們的程序可以正常啟動。

overcommit_memory

? ? 0:默認設置。

? ? ? ? ?進程申請內存時,系統(tǒng)會判斷剩余內存多少,

? ? ? ? ?如果有足夠的內存,則允許申請,否則會把報錯返回給進程。

? ? 1:進程申請內存時,系統(tǒng)允許分配所有物理內存(不考慮當前內存剩余),

? ? ? ? ?當使用內存超過可用內存時再報錯。

? ? 2:進程申請內存時,系統(tǒng)不允許分配大于swap空間大小以及overcommit_ratio比例大小的總和。

? ? ? ? ?overcommit_ratio比例默認50。

overcommit_ratio參數(shù):

? ? 當overcommit_memory=2時,該參數(shù)才生效。該參數(shù)決定了系統(tǒng)可用內存的大小。

? ? 它有一套專門的計算公式: 可分配大小=物理內存大小*overcommit_ratio/100+swap

? ??

修改內核參數(shù)的方法:(三種都可以)

? ? 方法一:

? ? ? ? # vim /etc/sysctl.conf

? ? ? ? ? ?vm.overcommit_memory=1 ? ? ? ? ? ?//有則更改,無則添加

? ? ? ? # sysctl -p ? ? ? ? ? //使配置文件生效

? ? ? ??

? ? 方法二:

? ? ? ? # sysctl vm.overcommit_memory=1

? ? ? ??

? ? 方法三:

? ? ? ? # echo 1 > /proc/sys/vm/overcommit_memory ?

?

?

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Linux内存申请机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。