一般系統(tǒng)是不會(huì)自動(dòng)釋放內(nèi)存的 關(guān)鍵的配置文件/proc/sys/vm/drop_caches。這個(gè)文件中記錄了緩存釋放的參數(shù),默認(rèn)值為0,也就是不釋放緩存。它的值可以為0~3之間的任意數(shù)字,代表著不同的含義:
0:0是系統(tǒng)默認(rèn)值,默認(rèn)情況下表示不釋放內(nèi)存,由操作系統(tǒng)自動(dòng)管理
1:釋放頁緩存
2:釋放dentries和inodes
3:釋放所有緩存
實(shí)操:
所以根據(jù)上面的說明,分別將1,2,3這3個(gè)數(shù)字重定向到drop_caches中可以實(shí)現(xiàn)內(nèi)存的釋放,一般釋放內(nèi)存都是重定向3到文件中,釋放所有的緩存
那么下面舉個(gè)例子,比如這里只釋放頁緩存,首先使用 free -h 查看當(dāng)前內(nèi)存剩余
當(dāng)前內(nèi)存剩余570M左右,另外buff/cache是1.3G,根據(jù)上面說的現(xiàn)在真正的剩余內(nèi)存應(yīng)該是1.8G左右,首先寫緩存到文件系統(tǒng):
sync
然后執(zhí)行下面命令釋放內(nèi)存(頁緩存buff/cache):
echo 1 》 /proc/sys/vm/drop_caches
執(zhí)行完之后,再次查看內(nèi)存剩余:
會(huì)發(fā)現(xiàn)內(nèi)存被釋放了,可用內(nèi)存確實(shí)變?yōu)?.8G左右
到這里內(nèi)存就釋放完了,現(xiàn)在drop_caches中的值為1,如果現(xiàn)在想讓操作系統(tǒng)重新分配內(nèi)存,那么設(shè)置drop_caches的值為0即可:
echo 0 》 /proc/sys/vm/drop_caches
另外需要注意的是,在生產(chǎn)環(huán)境中的服務(wù)器我們不要頻繁的去釋放內(nèi)存,只在必要時(shí)候清理內(nèi)存即可,更重要的是我們應(yīng)該從應(yīng)用程序?qū)用嫒?yōu)化內(nèi)存的利用和釋放,經(jīng)常清理內(nèi)存可能只是暫時(shí)屏蔽的應(yīng)用程序中的一些bug,所以更重要的是程序的調(diào)優(yōu),其他的交給操作系統(tǒng)來管理
責(zé)任編輯人:CC
-
Linux
+關(guān)注
關(guān)注
87文章
11420瀏覽量
212351 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3102瀏覽量
74888
發(fā)布評論請先 登錄
相關(guān)推薦
SE5 ffmpeg例程內(nèi)存不釋放的原因?
Linux系統(tǒng)中通過預(yù)留物理內(nèi)存實(shí)現(xiàn)ARM與FPGA高效通信的方法

使用rt_free釋放內(nèi)存時(shí)觸發(fā)了斷言怎么解決?
Linux服務(wù)器卡頓救星之一招釋放Cache內(nèi)存
Linux下如何管理虛擬內(nèi)存 使用虛擬內(nèi)存時(shí)的常見問題
C語言中申請的堆內(nèi)存能不能自動(dòng)釋放
英特爾推出全新MRDIMM高速內(nèi)存
Linux內(nèi)存泄露案例分析和內(nèi)存管理分享

Linux環(huán)境變量配置方法
內(nèi)存管理的硬件結(jié)構(gòu)

Linux服務(wù)器性能查看方法
linux驅(qū)動(dòng)程序的編譯方法是什么
buffers內(nèi)存與cached內(nèi)存的區(qū)別

評論