一般系統(tǒng)是不會自動釋放內(nèi)存的 關(guān)鍵的配置文件/proc/sys/vm/drop_caches。這個文件中記錄了緩存釋放的參數(shù),默認值為0,也就是不釋放緩存。它的值可以為0~3之間的任意數(shù)字,代表著不同的含義:
0:0是系統(tǒng)默認值,默認情況下表示不釋放內(nèi)存,由操作系統(tǒng)自動管理
1:釋放頁緩存
2:釋放dentries和inodes
3:釋放所有緩存
實操:
所以根據(jù)上面的說明,分別將1,2,3這3個數(shù)字重定向到drop_caches中可以實現(xiàn)內(nèi)存的釋放,一般釋放內(nèi)存都是重定向3到文件中,釋放所有的緩存
那么下面舉個例子,比如這里只釋放頁緩存,首先使用 free -h 查看當前內(nèi)存剩余
當前內(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)存剩余:
會發(fā)現(xiàn)內(nèi)存被釋放了,可用內(nèi)存確實變?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)存,只在必要時候清理內(nèi)存即可,更重要的是我們應(yīng)該從應(yīng)用程序?qū)用嫒?yōu)化內(nèi)存的利用和釋放,經(jīng)常清理內(nèi)存可能只是暫時屏蔽的應(yīng)用程序中的一些bug,所以更重要的是程序的調(diào)優(yōu),其他的交給操作系統(tǒng)來管理
責任編輯人:CC
-
Linux
+關(guān)注
關(guān)注
87文章
11123瀏覽量
207910 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
2903瀏覽量
73536
發(fā)布評論請先 登錄
相關(guān)推薦
評論