新聞中心
在Linux服務器中,內存和交換空間是系統(tǒng)運行必不可少的兩個部分。優(yōu)化系統(tǒng)的內存管理和交換空間是確保系統(tǒng)高效工作的關鍵步驟。本文將討論關于如何優(yōu)化Linux系統(tǒng)的內存管理和交換空間的一些技巧和步驟。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供科爾沁網(wǎng)站建設、科爾沁做網(wǎng)站、科爾沁網(wǎng)站設計、科爾沁網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、科爾沁企業(yè)網(wǎng)站模板建站服務,十年科爾沁做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
1.調整交換空間大小
交換空間用于暫時存儲不再使用內存的進程和數(shù)據(jù)。然而,如果交換空間設置過小,系統(tǒng)的一些進程可能會被迫過早地被殺死,執(zhí)行效率可能會大幅下降。
一般來說,如果內存的總量小于等于2GB,則應將交換空間設置為內存大小的2倍;而如果內存的總量大于2GB,則建議將交換空間設置為2GB+內存大小的一半。
在調整交換空間大小之前,建議先運行free -h或top -n 1看看當前的內存使用率。如果內存使用率過高,則需要優(yōu)化內存管理;如果內存使用率較低,則可以適量減少交換空間大小。
2.啟用透明大頁支持
傳統(tǒng)的大頁面由于會導致內存碎片化和缺頁調度的開銷,而不利于內存管理的優(yōu)化。而透明大頁(Transparent Huge Page)則可以在不增加缺頁調度的懲罰和寫時復制(Copy-On-Write)開銷的同時,有效地優(yōu)化內存管理。
啟用透明大頁支持可以極大地提升內存管理的效率,降低CPU使用率和延遲時間。可以通過cat /sys/kernel/mm/transparent_hugepage/enabled來查看透明大頁的使用狀態(tài)。而可以通過修改/sys/kernel/mm/transparent_hugepage/enabled文件來啟用透明大頁。
3.禁用內存泄漏進程
內存泄漏進程是指內存管理存在漏洞,導致某些進程長時間占用大量內存的現(xiàn)象。這些進程會嚴重危及系統(tǒng)的性能和穩(wěn)定性。因此,禁用內存泄漏進程對于優(yōu)化內存管理至關重要。
可以使用一些工具和命令來查找和殺死內存泄漏進程。例如,可以通過ps命令查看內存使用更大的進程,或者使用top命令來查看系統(tǒng)中CPU、內存和I/O等的運行情況。
4.使用進程控制器
進程控制器是一種用于控制進程的工具。它可以幫助我們調整進程的CPU使用率、內存限制以及其他資源限制等。
常用的進程控制器有cgroups和systemd。cgroups是Linux內核通過管理組限制進程資源使用的機制。而systemd是進程管理器和初始化系統(tǒng),還可以與cgroups一起使用,控制每個進程使用的資源量。
5.優(yōu)化內核參數(shù)
內核參數(shù)可以控制系統(tǒng)的一些基本設置,包括內存緩存、文件打開限制、文件句柄數(shù)、網(wǎng)絡緩存和協(xié)議棧等設置。通過優(yōu)化這些內核參數(shù),可以提高系統(tǒng)的性能和穩(wěn)定性,影響內存管理和交換空間的優(yōu)化。
一些常用的內核參數(shù)包括vm.swappiness、vm.dirty_background_ratio和vm.overcommit_memory等。vm.swappiness參數(shù)控制交換空間的使用情況。而vm.dirty_background_ratio和vm.overcommit_memory參數(shù)可以控制內存使用情況。
6.使用優(yōu)化工具
使用一些優(yōu)化工具可以幫助我們更快速和方便地進行內存管理和交換空間的優(yōu)化。
常用的優(yōu)化工具包括sar、top、htop、vmstat、ss、lsof等。這些工具可以幫助我們實時地監(jiān)控系統(tǒng)狀態(tài)、篩選出不必要的進程和服務等。
Linux系統(tǒng)的內存管理和交換空間對于系統(tǒng)的性能和穩(wěn)定性至關重要。通過調整交換空間大小、啟用透明大頁支持、禁用內存泄漏進程、使用進程控制器和優(yōu)化內核參數(shù)等方法,可以有效地優(yōu)化系統(tǒng)的內存管理和交換空間。同時,使用優(yōu)化工具可以幫助我們快速地監(jiān)控系統(tǒng)狀態(tài),及時調整系統(tǒng)配置,提高Linux服務器的運行效率和穩(wěn)定性。
相關問題拓展閱讀:
- linux安裝如何分區(qū)?如何手動分區(qū)?為什么?
- LINUX系統(tǒng)的內存管理知識詳解
- linux查看內存使用情況
linux安裝如何分區(qū)?如何手動分區(qū)?為什么?
linux下,建議新手分區(qū)時只分兩個:一個“SWAP”分區(qū),大小為內存的兩倍,一個“/”分區(qū)大小為全部可用空間。
這里把Linux分區(qū)問題詳細地介紹一下,以Red Hat Linux7.1為例。
首先我們要對硬盤分區(qū)的基本概念進行一些初步的了解,硬盤的分區(qū)主要分為基本分區(qū)
(Primary Partion)和擴充分區(qū)(Extension Partion)兩種,基本分區(qū)和擴充分區(qū)的數(shù)目之
和不能大于四個。且基本分區(qū)可以馬上被使用但不能再分區(qū)。擴充分區(qū)必須再進行分區(qū)后才
能使用,也就是說它必須還要進行二次分區(qū)。那么由擴充分區(qū)再分下去的是什么呢?它就是
邏輯分區(qū)(Logical Partion),況且邏輯分區(qū)沒有數(shù)量上限制。
對習慣于使用Dos或Windows的用戶來說,有幾個分區(qū)就有幾個驅動器,并且每個分區(qū)都
會獲得一個字母標識符,然后就可以選用這個字母來指定在這個分區(qū)上的文件和目錄,它們
的文件結構都是獨立的,非常好理解。但對這些用戶初上手Red Hat linux嗎, 可就有點惱
人了。因為對Red Hat linux用戶來說無論有幾個分區(qū),分給哪一目錄使用, 它歸根結底就
只有一個根目錄,一個獨立且唯一的文件結構。 Red Hat linux中每個分區(qū)都是用來組成整
個文件系統(tǒng)的一部分,因為它采用了一種叫“載入”的處理方法,它的整個文件系統(tǒng)中包含了
一整套的文件和目錄,且將一個分區(qū)和一個目錄聯(lián)系起來。這時要載入的一個分區(qū)將使它的
存儲空間在一個目錄下獲得。下面我們先來看看Red Hat linux的驅動器是如何標識的。
對于IDE硬盤,驅動器標識符為“hdx~”,其中“hd”表明分區(qū)所在設備的類型,這里是
指IDE硬盤了?!皒”為盤號(a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤),
“~”代表分區(qū),前四個分區(qū)用數(shù)字1到4表示,它們是主分區(qū)或擴展分區(qū),從5開始就是邏輯
分區(qū)。例,hda3表示廳緩祥為之一個IDE硬盤上的第三個主分區(qū)或擴展分區(qū),hdb2表示為第二個
IDE硬盤上的第二個主分區(qū)或擴展分區(qū)。對于SCSI硬盤則標識為“sdx~”,SCSI硬盤是用
“sd”來表示分區(qū)所在設備的類型的,其余則和IDE硬盤的表示方法一樣,不哪廳在多說。
我們從上面可以看到,Red Hat linux的分區(qū)是不同于其它操作系統(tǒng)分區(qū)的, 它的分區(qū)
格式只有Ext2和Swap兩種,Ext2用于存放系統(tǒng)文件,Swap則作為Red Hat linux的交換分區(qū)。
那么現(xiàn)在我們就可以知道Red Hat linux至少需要兩個專門的分區(qū)(Linux Native和Linux
Swap)況且不能將Red Hat linux安裝在Dos/Windows分區(qū)。一般來說我們將Red Hat Linux
安裝一個或多個類型為“l(fā)inux Native”的硬盤分區(qū), 但是在Red Hat Linux的每一個分區(qū)
都必須要指定一個“Mount Point”(載入點),告訴Red Hat linux在啟動時,這個目錄要
給哪個目錄使用。對“Swap”分區(qū)來說,一般定義一個且它不必要定義載入點。 下面我們先
對“l(fā)inux Native”和“Linux Swap”有個初步的了解。
*SWAP分區(qū)是LINUX暫時存儲數(shù)據(jù)的交換分區(qū),它主要是把主內存上暫時不用得數(shù)據(jù)存起
來,在需要的時候再調進內存內,且作為SWAP使用的分區(qū)不用指定“Mout Point”(載入點),
既然它作為交換分區(qū),我們理所當然應給它指定大小,它至少要等于系統(tǒng)上實際內存的量,
一般來說它的大小是內存的兩倍。具體如下:當順利啟動了安裝過程后,會顯示一個boot:提示符,
這時你只要鍵入boot:linux mem=1024MB就可以了(假定你的電腦內存為512MB)。另外你也可以創(chuàng)建和使用一個以上的交換
分區(qū),最多16個。
*linux Native是存放系統(tǒng)文件的地方,它只能用EXT2的分區(qū)類型,上面已說過。對
Windows用戶來說,操作系統(tǒng)必須裝在同一分區(qū)里,它是商業(yè)軟件嗎!所以你沒有選擇的余地!
對Red Hat linux來說,你有了扮搏較大的選擇余地,你可以把系統(tǒng)文件分幾個區(qū)來裝 (必須要
說明載入點),也可以就裝在同一個分區(qū)中(載入點是“/”)。 下面我們看看可以創(chuàng)建哪些
分區(qū)(僅列常用幾種)。
/boot分區(qū),它包含了操作系統(tǒng)的內核和在啟動系統(tǒng)過程中所要用到的文件, 建這個分
區(qū)是有必要的,因為目前大多數(shù)的PC機要受到BIOS的限制,況且如果有了一個單獨的/boot啟
動分區(qū),即使主要的根分區(qū)出現(xiàn)了問題,計算機依然能夠啟動。
/usr分區(qū),是Red Hat linux系統(tǒng)存放軟件的地方,如有可能應將更大空間分給它。
/home分區(qū),是用戶的home目錄所在地,這個分區(qū)的大小取決于有多少用戶。 如果是多
用戶共同使用一臺電腦的話,這個分區(qū)是完全有必要的,況且根用戶也可以很好地控制普通
用戶使用計算機,如對用戶或者用戶組實行硬盤使用,限制普通用戶訪問哪些文件等。
其實單用戶也有建立這個分區(qū)的必要,因為沒這個分區(qū)的話,那么你只能以根用戶的身份登
陸系統(tǒng),這樣做是危險的,因為根用戶對系統(tǒng)有絕對的使用權,可一旦你對系統(tǒng)進行了誤操
作,麻煩也就來了。
/var/log分區(qū),是系統(tǒng)日志記錄分區(qū),如果設立了這一單獨的分區(qū),這樣即使系統(tǒng)的日
志文件出現(xiàn)了問題,它們也不會影響到操作系統(tǒng)的主分區(qū)。
/tmp分區(qū),用來存放臨時文件。這對于多用戶系統(tǒng)或者網(wǎng)絡服務器來說是有必要的。這
樣即使程序運行時生成大量的臨時文件,或者用戶對系統(tǒng)進行了錯誤的操作,文件系統(tǒng)的其
它部分仍然是安全的。因為文件系統(tǒng)的這一部分仍然還承受著讀寫操作,所以它通常會比其
它的部分更快地發(fā)生問題。
/bin分區(qū),存放標準系統(tǒng)實用程序。
/dev分區(qū),存放設備文件。
/opt分區(qū),存放可選的安裝的軟件。
/in分區(qū),存放標準系統(tǒng)管理文件。
上面介紹了幾個常用的分區(qū),一般來說我們需要一個SWAP分區(qū),一個/boot分區(qū),一個
/usr分區(qū),一個/home 分區(qū),一個/var/log分區(qū)。當然這沒有什么規(guī)定,完全是依照你個人
來定的。但記住至少要有兩個分區(qū),一個SWAP分區(qū),一個/分區(qū)。下面我們來看看怎樣分區(qū)。
用戶可以使用兩種分區(qū)工具:
1.Disk Druid:它是Red Hat linux提供的硬盤管理工具, 它最初是隨Red HatLinux5
一起發(fā)售的,它可以根據(jù)用戶的要求創(chuàng)建和刪除硬盤分區(qū),另外還可以為每個分區(qū)管理載入
點,這是一個不錯的分區(qū)軟件,建議讀者使用。本文也將以此軟件詳細地介紹Red Hat linux
分區(qū)。
2.Fdisk:它是傳統(tǒng)的linux硬盤分區(qū)工具,比Disk Druid更強大,使用更加靈活。 但
是Fdisk要求用戶對硬盤分區(qū)有一定經(jīng)驗,并能夠適應且讀懂簡單的文本界面。 如果你是第
一次對一個硬盤驅動器進行分區(qū)操作的話,更好還是避免Fdisk這樣的程序, 它雖然強大但
用起來的感覺不是太好的。
附注:此外Red Hat linux還提供了一種叫fips的分區(qū)軟件, 但這種分區(qū)軟件具有一定
的危險性,不宜提倡操作。雖然有許多人已經(jīng)成功地用fips對他們的硬盤進行了分區(qū),但這
不能保證fips將在你的系統(tǒng)中也能正常地運行。況且Red Hat linux也不提供對fips的支持,
勸你對這種分區(qū)軟件還是慎用為好。
如果你希望將Red Hat linux安裝在已經(jīng)含有其他操作系統(tǒng)的盤上, 也就是多重操作系
統(tǒng),這個情況就比較復雜了,因為一個錯誤就可以毀掉你辛辛苦苦保存的數(shù)據(jù),讓你欲哭無
淚。如果你想讓Red Hat linux與OS/2共存,那你必須使用OS/2的分區(qū)軟件來創(chuàng)建硬盤分區(qū),
要不然OS/2將不能識別硬盤分區(qū)。另外你也可以用其它的一些分區(qū)軟件來分區(qū),下面列出了
一些常見的這種分區(qū)工具軟件:
*Partition Commander軟件,從
www.v-com.com
處下載。
*partition It軟件,從
www.quarterdeck..com
處下載。
*partition Magic軟件,從
www.powerquest.com
處下載。
注意:硬盤分區(qū)是一個非常危險的步驟,你要想安全地在不丟失數(shù)據(jù)的情況下改變磁盤
的分區(qū)有點不太現(xiàn)實,所以我建議大家對重要得數(shù)據(jù)進行備份,裝多操作系統(tǒng)更要如此,以
備不測。當然或許你是剛裝系統(tǒng)或就準備重裝,那也就是另外一回事了,但是大家對待分區(qū)
一定要慎重又慎重,切記。
下面我們詳細地了解一下Red Hat linux7.1自帶的Disk Druid分區(qū)軟件所包含的一些信息。
1.Current Disk Partitions區(qū)域(這里每一行代表了一個硬盤分區(qū))
Mount Point 指出Red Hat linux啟動并運行以后該分區(qū)的加載點,交換空間
(linux swap)是不需要加載點的。
Device 硬盤分區(qū)的設備名
Requeted 給這個分區(qū)定義時申請的最小空間
Actual 分配給該分區(qū)的實際空間
Type 說明了該分區(qū)的類型
2.Drive Summaries區(qū)域(這里每一行代表一個硬盤)
Drive 顯示硬盤的設備名
Geom 顯示硬盤的物理信息,C(柱面),H(磁頭),S(扇區(qū))
Total 顯示硬盤的可用空間
Used 顯示硬盤中已分配的空間
Free 顯示硬盤中末分配的空間
Bar Graph 該條圖形化地顯示當前硬盤使用的百分比,#號越少,空閑空間越多
3.Disk Druid按鈕
Add 增加一個分區(qū)
Edit 修改在Current Disk Partitons中被選中的分區(qū)的屬性, 選中該按鈕將出現(xiàn)一個
對話框來進行修改,但只能修改該分區(qū)的載入點。如果你需要修改其它內容,請先
刪除該分區(qū),而后再重新建這分區(qū)。
Delete 刪除一個在Current Disk Partitons中被選中的分區(qū)
Ok 確認
Back 不作保存,返回
4.如果你想增加一個分區(qū),請點擊“add”按鈕,這時會出現(xiàn)一對話框,內容說明如下:
Mount Point 分區(qū)載入點,說明分區(qū)
Size 分區(qū)的大小
Grow to fill disk 表明這個分區(qū)將添滿一個硬盤的整個未分配空間。這時,這個分區(qū)
的容量可以隨著其它分區(qū)的修改增加或減少
Type 選擇分區(qū)類型
Allowable Drives 選擇這個分區(qū)將創(chuàng)建在哪個硬盤上
好了,通過上面的了解想必大家都能容易地創(chuàng)建出適合自己的分區(qū)。下一步我們所要做
的工作就是要格式化所建的分區(qū),選擇你要格式化的分區(qū)并按Space鍵, 如果想在格式化分
區(qū)時檢查有無壞塊,選擇“Check for bad blocks during format”,點擊OK并按Space鍵。如
果分區(qū)中已無你要所保存的數(shù)據(jù),更好都格式化一下。
看鄭春一配叢消看視培知頻教程吧
LINUX系統(tǒng)的內存管理知識詳解
內存是Linux內核所管理的最重要的資源之一。內存管理系統(tǒng)是操作系統(tǒng)中最為重要的部分,因為系統(tǒng)的物理內存總是少于系統(tǒng)所需要的內存數(shù)量。虛擬內存就是為了克服這個矛盾而采用的策略。系統(tǒng)的虛擬內存通過在各個進程之間共享內存而使系統(tǒng)看起來有多于實際內存的內存容量。Linux支持虛擬內存, 就是使用磁盤作為RAM的擴展,使可用內存相應地有效擴大。核心把當前不用的內存塊存到硬盤,騰出內存給其他目的。當原來的內容又要使用時,再讀回內存。以下就是我為大家整理到的詳細LINUX系統(tǒng)內存管理的知識,歡迎大家閱讀!!!
LINUX系統(tǒng)教程:內存管理的知識詳解
一、內存使用情況監(jiān)測
(1)實時監(jiān)控內存使用情況
在命令行使用“Free”命令可以監(jiān)控內存使用情況
代碼如下:
#free
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:72
上面給出了一個256兆的RAM和512兆交換空間的系統(tǒng)情況。第三行輸出(Mem:)顯示物理內存。total列不顯示核心使用的物理內存(通常大約1MB)。used列顯示被使用的內存總額(第二行不計緩沖)。 free列顯示全部沒使用的內存。Shared列顯示多個進程共享的內存總額。Buffers列顯示磁盤緩存的當前大小。第五行(Swap:)對對換空間,顯示的信息類似上面。如果這行為羨芹全0,那么沒使用對換空間。在缺省的狀態(tài)下,free命令以千字節(jié)(也就是1024字節(jié)為單位)來顯示內存使用情況??梢允褂谩猦參數(shù)以字節(jié)為單位顯示內存使用情況,或者可以兄晌使用—m參數(shù)以兆字節(jié)為單位顯示內存使用情況。還可以通過—s參數(shù)使用命令來不間斷地監(jiān)視內存使用情況:
#free –b –s2
這個命令將會在終端窗口中連續(xù)不斷地報告內存的使用情況,每2秒鐘更新一次。
(2)組合watch與 free命令用來實時監(jiān)控內存使用情況:
代碼如下:
#watch -n 2 -d free
Every 2.0s: free Fri Jul 6 06:06:
total used free shared buffers cached
Mem:64784
-/+ buffers/cache:
Swap:15928
watch命令會每兩秒執(zhí)行 free一次,執(zhí)行前會清除屏幕,在同樣位置顯示數(shù)據(jù)。因為 watch命令不會卷動屏幕,所以適合出長時間的監(jiān)測內存使用率。可以使用 -n選項,控制執(zhí)行的頻率;也可以利用 -d選項,讓命令將每次不同的地方顯示出來。Watch命令會一直執(zhí)行,直到您按下 – 為止。
二、虛擬內存的概念
(1)Linux虛擬內存實現(xiàn)機制
Linux虛擬內存的實現(xiàn)需要六種機制的支持:地址映射機制、內存分配回收機制、緩存和刷新機制、請求頁機制、交換機制、內存共享機制。
首先內存管理程序通過映射機制把用戶程序的邏輯地址映射到物理地址,在用戶程序運行時如果發(fā)現(xiàn)程序中要用的虛地址沒有對應的物理內存時,就發(fā)出了請求頁要求;如果有空閑的內存可供分配,就請求分配內存(于是用到了內存的分配和回收),并把正在使用的物理頁記錄在緩存中(使用了緩存機制)。 如果沒有足夠的內存可供分配,那么就調用交換機制,騰出一部分內存。另外在地址映射中要通過TLB(翻譯后援存儲器)來尋找物理頁;交換機制中也要羨派鋒用到交換緩存,并且把物理頁內容交換到交換文件中后也要修改頁表來映射文件地址。
(2)虛擬內存容量設定
也許有人告訴你,應該分配2倍于物理內存的虛擬內存,但這是個不固定的規(guī)律。如果你的物理保存比較小,可以這樣設定。如果你有1G物理內存或更多的話,可以縮小一下虛擬內存。Linux會把大量的內存用做Cache的,但在資源緊張時回收回.。你只要看到swap為0或者很小就可以放心了,因為內存放著不用才是更大的浪費。
三、使甩vmstat命令監(jiān)視虛擬內存使用情況
vmstat是Virtual Meomory Statistics(虛擬內存統(tǒng)計)的縮寫,可對操作系統(tǒng)的虛擬內存、進程、CPU活動進行監(jiān)視。它是對系統(tǒng)的整體情況進行統(tǒng)計,不足之處是無法對某個進程進行深入分析。通常使用vmstat 5 5(表示在5秒時間內進行5次采樣)命令測試。將得到一個數(shù)據(jù)匯總它可以反映真正的系統(tǒng)情況。
代碼如下:
#vmstat 5 5
procemoryswapiosystemcpu—-
r b swpd free buff cache si so bi bo in cs us sy id wa
54 2
vmstat命令輸出分成六個部分:
(1)進程procs:
r:在運行隊列中等待的進程數(shù) 。
b:在等待io的進程數(shù) 。
(2)內存memoy:
swpd:現(xiàn)時可用的交換內存(單位KB)。
free:空閑的內存(單位KB)。
buff: 緩沖去中的內存數(shù)(單位:KB)。
cache:被用來做為高速緩存的內存數(shù)(單位:KB)。
(3) swap交換頁面
si: 從磁盤交換到內存的交換頁數(shù)量,單位:KB/秒。
so: 從內存交換到磁盤的交換頁數(shù)量,單位:KB/秒。
(4) io塊設備:
bi: 發(fā)送到塊設備的塊數(shù),單位:塊/秒。
bo: 從塊設備接收到的塊數(shù),單位:塊/秒。
(5)system系統(tǒng):
in: 每秒的中斷數(shù),包括時鐘中斷。
cs: 每秒的環(huán)境(上下文)切換次數(shù)。
(6)cpu中央處理器:
cs:用戶進程使用的時間 。以百分比表示。
sy:系統(tǒng)進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
如果 r經(jīng)常大于 4 ,且id經(jīng)常小于40,表示中央處理器的負荷很重。 如果bi,bo 長期不等于0,表示物理內存容量太小。
四、Linux 服務器的內存泄露和回收內存的方法
1、內存泄漏的定義:
一般我們常說的內存泄漏是指堆內存的泄漏。堆內存是指程序從堆中分配的,大小任意的(內存塊的大小可以在程序運行期決定),使用完后必須顯示釋放的內存。應用程序一般使用malloc,realloc,new等函數(shù)從堆中分配到一塊內存,使用完后,程序必須負責相應的調用free或釋放該內存塊,否則,這塊內存就不能被再次使用,我們就說這塊內存泄漏了。
2、內存泄露的危害
從用戶使用程序的角度來看,內存泄漏本身不會產(chǎn)生什么危害,作為一般的用戶,根本感覺不到內存泄漏的存在。真正有危害的`是內存泄漏的堆積,這會最終消耗盡系統(tǒng)所有的內存。從這個角度來說,一次性內存泄漏并沒有什么危害,因為它不會堆積,而隱式內存泄漏危害性則非常大,因為較之于常發(fā)性和偶發(fā)性內存泄漏它更難被檢測到。存在內存泄漏問題的程序除了會占用更多的內存外,還會使程序的性能急劇下降。對于服務器而言,如果出現(xiàn)這種情況,即使系統(tǒng)不崩潰,也會嚴重影響使用。
3、內存泄露的檢測和回收
對于內存溢出之類的麻煩可能大家在編寫指針比較多的復雜的程序的時候就會遇到。在 Linux 或者 unix 下,C、C++語言是最使用工具。但是我們的 C++ 程序缺乏相應的手段來檢測內存信息,而只能使用 top 指令觀察進程的動態(tài)內存總額。而且程序退出時,我們無法獲知任何內存泄漏信息。
使用kill命令
使用Linux命令回收內存,我們可以使用Ps、Kill兩個命令檢測內存使用情況和進行回收。在使用超級用戶權限時使用命令“Ps”,它會列出所有正在運行的程序名稱,和對應的進程號(PID)。Kill命令的工作原理是:向Linux操作系統(tǒng)的內核送出一個系統(tǒng)操作信號和程序的進程號(PID)。
應用例子:
為了高效率回收內存可以使用命令ps 參數(shù)v:
代碼如下:
# ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
tty1 Ss+ 0:8 0.1 /in/mingetty tty1
tty2 Ss+ 0:8 0.1 /in/mingetty tty2
tty3 Ss+ 0:2 0.1 /in/mingetty tty3
tty4 Ss+ 0:8 0.1 /in/mingetty tty4
tty5 Ss+ 0:2 0.1 /in/mingetty tty5
tty6 Ss+ 0:4 0.1 /in/mingetty tty6
tty7 Ss+ 1:.0 /usr/bin/Xorg :0 -br -a
pts/2 Ss 0:1496 0.6 -bash
pts/4 Ss 0:1472 0.6 /bin/bash
pts/4 S+ 0:48 0.2 ping 192.168.1.12
pts/2 R+ 0:68 0.3 ps v
然后如果想回收Ping命令的內存的話,使用命令:
代碼如下:
# Kill
使用工具軟件
Memprof是一個非常具有吸引力且非常易于使用的軟件,它由Red Hat的Owen Talyor創(chuàng)立。這個工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。這個工具直接就可以執(zhí)行,并且其工作起來無需對源代碼進行任何修改。在程序執(zhí)行時,這個工具會以圖形化的方式顯示內存的使用情況。
相關介紹:Linux
嚴格來講,Linux這個詞本身只表示Linux內核,但人們已經(jīng)習慣了用Linux來形容整個基于Linux內核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。
Linux擁有以下特性:類似于Unix的基本思想,支持完全免費與自由傳播,完全兼容POSIX1.0標準,支持多用戶、多任務、有著良好的界面、支持多種平臺。Linux 能運行主要的UNIX工具軟件、應用程序和網(wǎng)絡協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡操作系統(tǒng)。
linux查看內存使用情況
linux查看內存使用情況的方法是,1,proc。meminfo,查看 RAM 使用情況最簡單的方法是通過 ,procmeminfo。
這個動態(tài)更新的虛擬文件實際上是許多其他內存相關工具 free ,ps ,top的組合顯示。
2,atop。atop 命令是一個終端環(huán)境的監(jiān)控命令。它顯示的是各種并枯系統(tǒng)資源,CPU, memory, network, IOkernel的綜合,并且在高負載的情況下進行了彩色標注。
3,free。free 命令是一個快速查看內存使用情況的方法,它是對 ,proc,meminfo 收集到的信息的一個概述。
4,GNOME System Monitor。GNOME System Monitor 是一個顯示最近一段時間內的 CPU內存交換區(qū)及網(wǎng)絡的使用情況的視圖工具。它還提供了一種查絕臘洞看 CPU 及內存使用情況的方法。
5,htop。htop 命令顯示了每個進程的內存實時使用率。它提供了所有進程的常駐內存大小,程序總內存大小,共享庫大小等的報告,列表可以水平局數(shù)及垂直滾動。6,KDE System Monitor功能同 4 中介紹的 GENOME 版本。
top命令是Linux下常用的性能分析工具,能夠實時顯示系統(tǒng)中各個進程的資源占用狀況,類似于Windows的任務管理器。
可以直接使用top命令后,查看%MEM的內容,可以選擇按進程查看或者按用戶查看,如想查看oracle用戶的進程內存使用情況的話可以使用如下的命令$top-uoracle。
內容解釋PID進程的ID,USER進程所有者,PR進程的優(yōu)先級別,越小越優(yōu)先被執(zhí)行,NInice值,VIRT進程占用的虛擬內存,RES進程占用的物理內存,SHR進程使用的共享內存,S進程的狀態(tài),S表示休眠,R表示正在運行,Z表示僵死狀態(tài),N表示該進程優(yōu)先值為負數(shù)。
%CPU進程占用CPU的使用率,%MEM進程使用的物理內存和總內存的百分比,TIME+該進程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值,COMMAND進程啟動命令名稱。
在命令行中輸入top,即可啟動top,top的全屏對話模式可分為3部分系統(tǒng)信息欄、命令輸入欄、進程列表欄。
之一部分最上部的系統(tǒng)信息欄,之一行top00:11:04為系統(tǒng)當前時刻,3:35為系統(tǒng)啟動后到現(xiàn)在的運作時間,2users為當前登錄到系統(tǒng)的用戶,更確切的說是登錄到用戶的終端數(shù)–同一個用戶同一時間對系統(tǒng)多個終端的連接將被視為多個用戶連接到系統(tǒng),這里的用戶數(shù)也將表現(xiàn)為終端的數(shù)目。
loadaverage為當前系統(tǒng)負載的平均值,后面的三個值分別為1分鐘前、5分鐘前、15分鐘前進程的平均數(shù),一般的可以認為這個數(shù)值帶宏汪超過CPU數(shù)目時,CPU將比較吃力的負載當前系統(tǒng)所包含的進程。
第二行Tasks,59total為當前系統(tǒng)進程總數(shù),1running為當前運行中的進程數(shù),58sleeping為當前處于等待狀態(tài)中的進程數(shù),0stoped為被停蠢仔止的系統(tǒng)進程數(shù),0zombie為被復原的進程數(shù)。
第三行Cpus,分別表示了CPU當前的使用率,第四行Mem分別表示了內存總量、當前使用量、空閑內存量、以及緩沖使用中的內存量,第五行Swap表示類別同第四行Mem,但此處反映著交換分區(qū)Swap的使用情況,通常,交換分區(qū)(Swap)被頻繁使用的情況,將被視作物理內存不足而造成的。
第二部分中間部分的內部命令提示欄top運行中可以通過top的內部命令對進程的顯示方式進行控制,內部命令如下表,s改變畫面更新頻率,l關閉或開啟之一部分之一行top信息的表示,t關閉或開啟之一部分第二行Tasks和第三行Cpus信息的表示,m關閉或開啟之一部分第四行Mem和第五絕旁行Swap信息的表示。
N以PID的大小的順序排列表示進程列表第三部分后述,P以CPU占用率大小的順序排列進程列表第三部分后述,M以內存占用率大小的順序排列進程列表第三部分后述,h顯示幫助,n設置在進程列表所顯示進程的數(shù)量,q退出top,s改變畫面更新周期。
第三部分最下部分的進程列表欄以PID區(qū)分的進程列表將根據(jù)所設定的畫面更新時間定期的更新,通過top內部命令可以控制此處的顯示方式pmap可以根據(jù)進程查看進程相關信息占用的內存情況,進程號可以通過ps查看如下所示$pmap-d5647。
ps如下例所示$ps-e-o’pid,comm,args,pcpu,rsz,vsz,stime,user,uid’其中rsz是是實際內存,$ps-e-o’pid,comm,args,pcpu,rsz,vsz,stime,user,uid’|greporacle|sort-nrk,其中rsz為實際內存,上例實現(xiàn)按內存排序,由大到小。
在Linux下查看內存我們一般用free命令#free,totalusedfreesharedbufferscached,Mem:68236,-/+buffers/cache:,Swap:68116。
下面是對這些數(shù)值的解釋total總計物理內存的大小,used已使用多大,free可用有多少,Shared多個進程共享的內存總額,Buffers/cached:磁盤緩存的大小,第三行-/+buffers/cached,used已使用多大,free:可用有多少。
Linux的特點
Linux是一種自由和開放源代碼的類UNIX操作系統(tǒng),該操作系統(tǒng)的內核由林納斯托瓦茲在1991年10月5日首次發(fā)布,在加上用戶空間的應用程序之后,成為Linux操作系統(tǒng),Linux也是自由軟件和開放源代碼軟件發(fā)展中最著名的例子,只要遵循GNU通用公共許可證,任何個人和機構都可以自由地使用Linux的所有底層源代碼,也可以自由地修改和再發(fā)布。
大多數(shù)Linux系統(tǒng)還包括了像提供GUI界面的X Window之類的程序,除了一部分專家之外,大多數(shù)人都是直接使用Linux發(fā)布版,而不是自己選擇每一樣組件或自行設置,以后借助于Internet網(wǎng)絡,并通過全世界各地計算機愛好者的共同努力,已成為今天世界上使用最多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。
linux查看內存使用情況方法:
工具/原料:蘋果筆記本,Linux操作系統(tǒng)。
方法/步驟:
1、在電腦中進碼鎮(zhèn)入Linux操作系統(tǒng),打開Linux命令界面。
2、在Linux命令界面中輸入cat /proc/meminfo命令后,敲擊鍵鍵盤回車嘩芹鍵。
3、在敲擊完回車鍵后,出現(xiàn)MemTotal和MemFree分別就可以查看內存使用情況和空閑內存了。
關于linux swap mem的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務、應用軟件開發(fā)、網(wǎng)站建設推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎服務!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務器和獨立服務器。創(chuàng)新互聯(lián)成都老牌IDC服務商,專注四川成都IDC機房服務器托管/機柜租用。為您精選優(yōu)質idc數(shù)據(jù)中心機房租用、服務器托管、機柜租賃、大帶寬租用,可選線路電信、移動、聯(lián)通等。
本文名稱:如何優(yōu)化Linux系統(tǒng)的交換空間和內存管理(linuxswapmem)
鏈接分享:http://www.dlmjj.cn/article/dpdipec.html


咨詢
建站咨詢
