一般系統(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:釋放頁(yè)緩存
2:釋放dentries和inodes
3:釋放所有緩存
實(shí)操:
所以根據(jù)上面的說(shuō)明,分別將1,2,3這3個(gè)數(shù)字重定向到drop_caches中可以實(shí)現(xiàn)內(nèi)存的釋放,一般釋放內(nèi)存都是重定向3到文件中,釋放所有的緩存
那么下面舉個(gè)例子,比如這里只釋放頁(yè)緩存,首先使用 free -h 查看當(dāng)前內(nèi)存剩余
當(dāng)前內(nèi)存剩余570M左右,另外buff/cache是1.3G,根據(jù)上面說(shuō)的現(xiàn)在真正的剩余內(nèi)存應(yīng)該是1.8G左右,首先寫緩存到文件系統(tǒng):
sync
然后執(zhí)行下面命令釋放內(nèi)存(頁(yè)緩存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)來(lái)管理
責(zé)任編輯人:CC
-
Linux
+關(guān)注
關(guān)注
87文章
11342瀏覽量
210153 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3052瀏覽量
74225
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論