linux 進程 釋放內存,Linux 釋放內存方法和原理

今天驚愕地發現,主節點上8G內存被不知道什么進程吃掉了整整6G有余,正常的計算快要維持不下去了,遂處理之。

先看看內存使用狀況

[root@node1 ~]# free -m

total used free shared buffers cached

Mem: 8004 6557 1446 0 163 5630

-/+ buffers/cache: 763 7240

Swap: 1983 0 1983

其中:

total 內存總數

used 已經使用的內存數

free 空閑的內存數

shared 多個進程共享的內存總額

buffers Buffer Cache和cached Page Cache 磁盤緩存的大小

-buffers/cache 的內存數:used - buffers - cached

+buffers/cache 的內存數:free + buffers + cached

可用的memory=free memory+buffers+cached

把內存里的數據暫時寫到硬盤里

[root@node1 ~]# sync

修改 /proc/sys/vm/drop_caches文件(/proc/sys/vm/drop_caches的默認值為0)

[root@node1 ~]# echo 3 > /proc/sys/vm/drop_caches

[root@node1 ~]# cat /proc/sys/vm/drop_caches

再看內存

[root@node1 ~]# free -m

total used free shared buffers cached

Mem: 8004 631 7372 0 0 60

-/+ buffers/cache: 570 7433

Swap: 1983 0 1983

終于釋放出來了。

有關/proc/sys/vm/drop_caches的用法在下面進行了說明(原文:http://www.linuxinsight.com/proc_sys_vm_drop_caches.html):

Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

echo 3 > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.

This tunable was added in 2.6.16.

真實情況是 “當有某程序需要占用大內存時linux會自動釋放cache”

linux的理念是內存空著不用白不用,因此會使用空閑內存來做buffer和cache。

我的一臺虛擬機運行了JBOSS,在運行一段時間后,查看內存使用情況:

[root@JBOSS ~]# free -m

total used free shared buffers cached

Mem: 3949 2928 1021 0 308 1278

-/+ buffers/cache: 1341 2608

Swap: 4094 0 4094

可以看出,內存已用2928M,但實際除去 buffers/cache后實際只使用了1341M。

你若不管它,內存是不會釋放的,而且也沒必要釋放。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375976.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375976.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375976.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

玩轉Win32開發(2):完整的開發流程

上一篇中我給各位說了一般人認為C中較為難的東西——指針。其實對于C,難點當然不局限在指針這玩意兒上,還有一些有趣的概念,如模板類、虛基類、純虛函數等,這些都是概念性的東西,幾乎每一本C書上都會介紹,而…

c++函數傳參:值傳遞、指針傳遞、引用傳遞

1、將變量名作為實參和形參: 這時傳給形參的是變量的值,傳遞是單向的。如果在執行函數期間形參的值發生變化,并不傳回實參。應為在調用函數時,形參和實參不是同一個存儲單元。 2、傳遞變量的指針: 形參是指針變量&a…

贊!帶進度條的 jQuery 文件拖放上傳插件

jQuery File Uploader 是一個 jQuery 文件拖放上傳插件,包括 Ajax 上傳和進度條效果。作者編寫這個插件的想法是要保持它非常簡單,不像其他的插件,很多的標記,并提供一些 Hack 的方式使之兼容那些古老的瀏覽器。jQuery File Uploa…

linux系統有幾個系統盤,linux操作系統的分區有哪些種類?各分區主要作用是什么?...

滿意答案Linux下一切都是文件,不存在分區的概念,在Linux下說的分區只是磁盤管理和數據組織的需要。Linux使用標準的目錄結構,在安裝的時候,安裝程序就已經為用戶創建了文件系統和完整而固定的目錄組成形式,并指定了每個…

::范圍解析運算符

學習筆記&#xff1a;參考鏈接 ::是范圍解析運算符&#xff0c;或者稱為域區分符&#xff0c;用來指明一個函數或一個數據屬于哪一個類。 ::也可以不跟類名&#xff0c;表示全局函數或者全局數據 eg: #include<iostream> using namespace std;int month;//全局變量 i…

渴望

有些時候 還是會覺得很孤獨 因為自己總是一個人 一個人吃飯 一個人學習 一個人生活 心情難免會低落 很想有一個人 可以一直陪伴在自己身邊 一起吃飯 一起學習 一起看潮起潮落 以為自己足夠堅強 可以耐得住很多孤獨 卻總還是會 感覺lonely 很多時候很羨慕 那些大學里的小情侶 雖…

linux中可以安裝不同版本的gcc么,在linux下安裝多個版本的GCC

文章鏈接&#xff1a;http://blog.csdn.net/chid/article/details/6251781很是有用&#xff0c;轉載學習1.查看當前linux版本內核版本&#xff1a;cat /proc/version或者&#xff1a;uname -a2.查看gcc的版本gcc -v或者&#xff1a;gcc --version或者&#xff1a;查看當前安裝的…

Python中如何讀取xml的數據

<?xml version"1.0" encoding"utf-8" ?> - <catalog><maxid>4</maxid> - <login username"pytest" passwd"123456"><caption>Python</caption> - <item id"4"><ca…

C++中private成員變量和protect成員變量的區別

保護成員和私有成員很相似&#xff0c;但是就是在子類中&#xff0c;保護成員可以訪問&#xff0c;而私有成員不能被訪問&#xff0c;也就是說子類中的函數&#xff0c;可以訪問父類中的保護成員變量&#xff0c;而不能訪問私有成員變量&#xff0c;要想訪問父類中的私有成員變…

Linux下C語言串口應用編程,Linux下串口C語言編程

Linux下串口C語言編程 (5頁)本資源提供全文預覽&#xff0c;點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧&#xff0c;查找使用更方便哦&#xff01;9.9 積分串口操作代碼#include #include #include #include #include #include #include #include #include #define BUFFER…

順序查找 折半查找

順序查找 算法描述 順序比較即可。 平均查找長度 (n1)/2, 其中n為表長。 時間復雜度 O(n) #include "stdio.h" typedef struct student{int id; /*學生編號*/char name[10]; /*…

linux c實現一個簡單的sniffer

參考陳兵老師的《網絡安全》一書 環境&#xff1a;kali linuxgcc 6.xx 具體的實現原理是&#xff0c;先將自己的網卡設置為混雜模式&#xff0c;然后從特殊的套接字中讀取以太網幀&#xff0c;對讀取的以太幀進行篩選、去報頭。得到我們想要的數據。 #include<stdio.h>…

Java12題:發獎金問題

題目&#xff1a;企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時&#xff0c;獎金可提10%&#xff1b;利潤高于10萬元&#xff0c;低于20萬元時&#xff0c;低于10萬元的部分按10%提成&#xff0c;高于10萬元的部分&#xff0c;可可提成7.5%&#xff1b;20萬到40萬之間…

Linux第一條指令地址,arm-linux 啟動代碼分析——stage1 (1)

本文針對arm linux, 從kernel的第一條指令開始分析,一直分析到進入start_kernel()函數.我們當前以linux-2.6.19內核版本作為范例來分析,本文中所有的代碼,前面都會加上行號以便于和源碼進行對照.例:在文件init/main.c中:00478: asmlinkage void __init start_kernel(void)前面的…

C#--序列化與反序列化

引用: 序列化與反序列化 解釋: 序列化,就是將一個對象保存到文件中去,而反序列化就是將該文件重新保存為一個對象. 序列化的三種方式: 1.BinaryFormatter class BinarySerialize : ISerialize{FileStream fs;string filepath "D:/1/1.txt";public void Serialize(Bo…

開啟linux ssh

kali linux在開機的時候ssh服務是默認關閉的&#xff0c;可通過以下方法開啟服務

Android中實現全屏、無標題欄的兩種辦法(另附Android系統自帶樣式的解釋)(轉)...

實現全屏無標題欄&#xff1a; 1.在xml文件中進行配置 AndroidManifest.xml中&#xff0c;找到需要全屏或設置成無標題欄的Activity&#xff0c;在該Activity進行如下配置即可。 實現全屏效果&#xff1a; android:theme"android:style/Theme.NoTitleBar.Fullscreen"…

格式化linux grub,linux grub 引導啟動過程詳解

機器加電啟動后,BIOS開始檢測系統參數,如內存的大小,日期和時間,磁盤設備以及這些磁盤設備用來引導的順序,通常情況下&#xff0c;BIOS都是被配置成首先檢查軟驅或者光驅(或兩者都檢查)&#xff0c;然后再嘗試從硬盤引導。如果在這些可移動的設備中&#xff0c;沒有找到可引導的…

DevExpress GridControl 后臺設置列

/// <summary>/// 初始化GridView /// </summary>/// <param name"gv">GridView 名稱</param>/// <param name"captions">列標題</param>/// <param name"fieldName">列字段</param>/// <pa…

linux c實現myecho、mycat、mycp

myecho、mycat、mycp分別用于模擬系統命令echo、cat、cp 代碼如下&#xff1a; myecho #include<stdlib.h> #include<stdio.h> int main(int argc,char *argv[]){if(argc1){printf("Error:need parameter!\n");exit(0);}for(int i1;i<argc;i)print…