亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術(shù)支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

Linux系統(tǒng)基本的內(nèi)存管理

添加時間:2016-1-22 2:55:50  添加: 思海網(wǎng)絡(luò) 
內(nèi)存是Linux內(nèi)核所管理的最重要的資源之一。內(nèi)存管理系統(tǒng)是操作系統(tǒng)中最為重要的部分,因為系統(tǒng)的物理內(nèi)存總是少于系統(tǒng)所需要的內(nèi)存數(shù)量。虛擬內(nèi)存就是為了克服這個矛盾而采用的策略。系統(tǒng)的虛擬內(nèi)存通過在各個進程之間共享內(nèi)存而使系統(tǒng)看起來有多于實際內(nèi)存的內(nèi)存容量。Linux支持虛擬內(nèi)存, 就是使用磁盤作為RAM的擴展,使可用內(nèi)存相應(yīng)地有效擴大。核心把當(dāng)前不用的內(nèi)存塊存到硬盤,騰出內(nèi)存給其他目的。當(dāng)原來的內(nèi)容又要使用時,再讀回內(nèi)存。
 
一、內(nèi)存使用情況監(jiān)測
 
(1)實時監(jiān)控內(nèi)存使用情況
 
在命令行使用“Free”命令可以監(jiān)控內(nèi)存使用情況



代碼如下:
#free

             total       used       free     shared    buffers     cached

Mem:        256024     192284      63740          0      10676     101004

-/+ buffers/cache:      80604     175420

Swap:       522072          0     522072

上面給出了一個256兆的RAM和512兆交換空間的系統(tǒng)情況。第三行輸出(Mem:)顯示物理內(nèi)存。total列不顯示核心使用的物理內(nèi)存(通常大約1MB)。used列顯示被使用的內(nèi)存總額(第二行不計緩沖)。 free列顯示全部沒使用的內(nèi)存。Shared列顯示多個進程共享的內(nèi)存總額。Buffers列顯示磁盤緩存的當(dāng)前大小。第五行(Swap:)對對換空間,顯示的信息類似上面。如果這行為全0,那么沒使用對換空間。在缺省的狀態(tài)下,free命令以千字節(jié)(也就是1024字節(jié)為單位)來顯示內(nèi)存使用情況。可以使用—h參數(shù)以字節(jié)為單位顯示內(nèi)存使用情況,或者可以使用—m參數(shù)以兆字節(jié)為單位顯示內(nèi)存使用情況。還可以通過—s參數(shù)使用命令來不間斷地監(jiān)視內(nèi)存使用情況:
 
#free –b –s2
 
這個命令將會在終端窗口中連續(xù)不斷地報告內(nèi)存的使用情況,每2秒鐘更新一次。
 
(2)組合watch與 free命令用來實時監(jiān)控內(nèi)存使用情況:
 
 


代碼如下:
#watch -n 2 -d free

Every 2.0s: free                                        Fri Jul 6 06:06:12 2007

             total       used       free     shared    buffers     cached

Mem:        233356     218616      14740          0       5560      64784

-/+ buffers/cache:     148272      85084

Swap:       622584       6656     615928
 
 
watch命令會每兩秒執(zhí)行 free一次,執(zhí)行前會清除屏幕,在同樣位置顯示數(shù)據(jù)。因為 watch命令不會卷動屏幕,所以適合出長時間的監(jiān)測內(nèi)存使用率。可以使用 -n選項,控制執(zhí)行的頻率;也可以利用 -d選項,讓命令將每次不同的地方顯示出來。Watch命令會一直執(zhí)行,直到您按下 [Ctrl]-[C] 為止。
 
二、虛擬內(nèi)存的概念
 
(1)Linux虛擬內(nèi)存實現(xiàn)機制
 
Linux虛擬內(nèi)存的實現(xiàn)需要六種機制的支持:地址映射機制、內(nèi)存分配回收機制、緩存和刷新機制、請求頁機制、交換機制、內(nèi)存共享機制。
 
首先內(nèi)存管理程序通過映射機制把用戶程序的邏輯地址映射到物理地址,在用戶程序運行時如果發(fā)現(xiàn)程序中要用的虛地址沒有對應(yīng)的物理內(nèi)存時,就發(fā)出了請求頁要求;如果有空閑的內(nèi)存可供分配,就請求分配內(nèi)存(于是用到了內(nèi)存的分配和回收),并把正在使用的物理頁記錄在緩存中(使用了緩存機制)。 如果沒有足夠的內(nèi)存可供分配,那么就調(diào)用交換機制,騰出一部分內(nèi)存。另外在地址映射中要通過TLB(翻譯后援存儲器)來尋找物理頁;交換機制中也要用到交換緩存,并且把物理頁內(nèi)容交換到交換文件中后也要修改頁表來映射文件地址。
 
(2)虛擬內(nèi)存容量設(shè)定
 
也許有人告訴你,應(yīng)該分配2倍于物理內(nèi)存的虛擬內(nèi)存,但這是個不固定的規(guī)律。如果你的物理保存比較小,可以這樣設(shè)定。如果你有1G物理內(nèi)存或更多的話,可以縮小一下虛擬內(nèi)存。Linux會把大量的內(nèi)存用做Cache的,但在資源緊張時回收回.。你只要看到swap為0或者很小就可以放心了,因為內(nèi)存放著不用才是最大的浪費。

三、使甩vmstat命令監(jiān)視虛擬內(nèi)存使用情況
 
vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計)的縮寫,可對操作系統(tǒng)的虛擬內(nèi)存、進程、CPU活動進行監(jiān)視。它是對系統(tǒng)的整體情況進行統(tǒng)計,不足之處是無法對某個進程進行深入分析。通常使用vmstat 5 5(表示在5秒時間內(nèi)進行5次采樣)命令測試。將得到一個數(shù)據(jù)匯總它可以反映真正的系統(tǒng)情況。
 
 


代碼如下:
#vmstat 5 5

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

 r b   swpd   free   buff cache   si   so    bi    bo   in    cs us sy id wa

 1 0 62792   3460   9116 88092    6   30   189    89 1061   569 17 28 54 2

 0 0 62792   3400   9124 88092    0    0     0    14 884   434 4 14 81 0

 0 0 62792   3400   9132 88092    0    0     0    14 877   424 4 15 81 0

 1 0 62792   3400   9140 88092    0    0     0    14 868   418 6 20 74 0

 1 0 62792   3400   9148 88092    0    0     0    15 847   400 9 25 67 0
 
vmstat命令輸出分成六個部分:
 
(1)進程procs:
r:在運行隊列中等待的進程數(shù) 。
b:在等待io的進程數(shù) 。
 
(2)內(nèi)存memoy:
 
swpd:現(xiàn)時可用的交換內(nèi)存(單位KB)。
 
free:空閑的內(nèi)存(單位KB)。
 
buff: 緩沖去中的內(nèi)存數(shù)(單位:KB)。
 
cache:被用來做為高速緩存的內(nèi)存數(shù)(單位:KB)。
 
(3) swap交換頁面
 
si: 從磁盤交換到內(nèi)存的交換頁數(shù)量,單位:KB/秒。
 
so: 從內(nèi)存交換到磁盤的交換頁數(shù)量,單位:KB/秒。
 
(4) io塊設(shè)備:
 
bi: 發(fā)送到塊設(shè)備的塊數(shù),單位:塊/秒。
 
bo: 從塊設(shè)備接收到的塊數(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,表示中央處理器的負(fù)荷很重。 如果bi,bo 長期不等于0,表示物理內(nèi)存容量太小。
 
四、Linux 服務(wù)器的內(nèi)存泄露和回收內(nèi)存的方法
 
1、內(nèi)存泄漏的定義:
 
一般我們常說的內(nèi)存泄漏是指堆內(nèi)存的泄漏。堆內(nèi)存是指程序從堆中分配的,大小任意的(內(nèi)存塊的大小可以在程序運行期決定),使用完后必須顯示釋放的內(nèi)存。應(yīng)用程序一般使用malloc,realloc,new等函數(shù)從堆中分配到一塊內(nèi)存,使用完后,程序必須負(fù)責(zé)相應(yīng)的調(diào)用free或delete釋放該內(nèi)存塊,否則,這塊內(nèi)存就不能被再次使用,我們就說這塊內(nèi)存泄漏了。
 
2、內(nèi)存泄露的危害
 
從用戶使用程序的角度來看,內(nèi)存泄漏本身不會產(chǎn)生什么危害,作為一般的用戶,根本感覺不到內(nèi)存泄漏的存在。真正有危害的是內(nèi)存泄漏的堆積,這會最終消耗盡系統(tǒng)所有的內(nèi)存。從這個角度來說,一次性內(nèi)存泄漏并沒有什么危害,因為它不會堆積,而隱式內(nèi)存泄漏危害性則非常大,因為較之于常發(fā)性和偶發(fā)性內(nèi)存泄漏它更難被檢測到。存在內(nèi)存泄漏問題的程序除了會占用更多的內(nèi)存外,還會使程序的性能急劇下降。對于服務(wù)器而言,如果出現(xiàn)這種情況,即使系統(tǒng)不崩潰,也會嚴(yán)重影響使用。
 
3、內(nèi)存泄露的檢測和回收
 
對于內(nèi)存溢出之類的麻煩可能大家在編寫指針比較多的復(fù)雜的程序的時候就會遇到。在 Linux 或者 unix 下,C、C++語言是最使用工具。但是我們的 C++ 程序缺乏相應(yīng)的手段來檢測內(nèi)存信息,而只能使用 top 指令觀察進程的動態(tài)內(nèi)存總額。而且程序退出時,我們無法獲知任何內(nèi)存泄漏信息。
 
使用kill命令
 
使用Linux命令回收內(nèi)存,我們可以使用Ps、Kill兩個命令檢測內(nèi)存使用情況和進行回收。在使用超級用戶權(quán)限時使用命令“Ps”,它會列出所有正在運行的程序名稱,和對應(yīng)的進程號(PID)。Kill命令的工作原理是:向Linux操作系統(tǒng)的內(nèi)核送出一個系統(tǒng)操作信號和程序的進程號(PID)。
 
應(yīng)用例子:
 
為了高效率回收內(nèi)存可以使用命令ps 參數(shù)v:
 


代碼如下:

[root@www ~]# ps v

 PID TTY      STAT   TIME MAJFL   TRS   DRS   RSS %MEM COMMAND

 2542 tty1     Ss+    0:00      0     8 1627   428 0.1 /sbin/mingetty tty1

 2543 tty2     Ss+    0:00      0     8 1631   428 0.1 /sbin/mingetty tty2

 2547 tty3     Ss+    0:00      0     8 1631   432 0.1 /sbin/mingetty tty3

 2548 tty4     Ss+    0:00      0     8 1627   428 0.1 /sbin/mingetty tty4

 2574 tty5     Ss+    0:00      0     8 1631   432 0.1 /sbin/mingetty tty5

 2587 tty6     Ss+    0:00      0     8 1627   424 0.1 /sbin/mingetty tty6

 2657 tty7     Ss+    1:18     12 1710 29981 7040 3.0 /usr/bin/Xorg :0 -br -a

 2670 pts/2    Ss     0:01      2   682 6213 1496 0.6 -bash

 3008 pts/4    Ss     0:00      2   682 6221 1472 0.6 /bin/bash

 3029 pts/4    S+     0:00      2    32 1783   548 0.2 ping 192.168.1.12

 3030 pts/2    R+     0:00      2    73 5134   768 0.3 ps v
 
然后如果想回收Ping命令的內(nèi)存的話,使用命令:
 


代碼如下:
# Kill -9 3029

使用工具軟件
 
Memprof是一個非常具有吸引力且非常易于使用的軟件,它由Red Hat的Owen Talyor創(chuàng)立。這個工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。這個工具直接就可以執(zhí)行,并且其工作起來無需對源代碼進行任何修改。在程序執(zhí)行時,這個工具會以圖形化的方式顯示內(nèi)存的使用情況。

關(guān)鍵字:Linux、系統(tǒng)、內(nèi)存管理
分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機打開網(wǎng)站