新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 初學者如何熟悉Linux內存管理機制

        初學者如何熟悉Linux內存管理機制

        作者: 時間:2016-10-08 來源:網絡 收藏

        圖1 Linux虛擬內存實現原理

        6.虛擬內存容量設定

        也許有人說,虛擬內存容量的設定應該分配2倍于物理內存,但這只是個規律。如果物理內存比較小,可以這樣設定。如果有256MB物理內存或更多的話,就可以縮小虛擬內存。Linux會把大量的內存用做Cache,但在資源緊張時會收回。只要看到swap為0,或者該數很小就可以放心了,內存放著不用才是最大的浪費。

        內存泄露和回收內存的方法

        1.內存泄漏的定義

        一般常說的內存泄漏是指堆內存的泄漏。堆內存是指程序從堆中分配的、大小任意的(內存塊的大小可以在程序運行期決定)、使用完后必須顯示釋放的內存。應用程序一般使用malloc、realloc、new等函數從堆中分配到一塊內存,使用完后,程序必須負責相應的調用free或delete釋放該內存塊。否則,這塊內存就不能被再次使用,我們就說這塊內存泄漏了。

        2.內存泄露的危害

        從用戶使用程序的角度來看,內存泄漏本身不會產生什么危害。作為一般的用戶,根本感覺不到內存泄漏的存在。真正有危害的是內存泄漏的堆積,這會最終消耗盡系統所有的內存。從這個角度來說,一次性內存泄漏并沒有什么危害,因為它不會堆積。而隱式內存泄漏危害性則非常大,因為較之于常發性和偶發性內存泄漏它更難被檢測到。存在內存泄漏問題的程序除了會占用更多的內存外,還會使程序的性能急劇下降。對于服務器而言,如果出現這種情況,即使系統不崩潰,也會嚴重影響使用。

        3.內存泄露的檢測和回收

        對于內存溢出之類的麻煩,大家可能在編寫指針比較多的復雜程序時就會遇到。在Linux或Unix下,C和C++語言是最常使用的工具。但是C++程序缺乏相應的手段來檢測內存信息,只能使用top指令觀察進程的動態內存總額。而且程序退出時,我們無法獲知任何內存泄漏信息。

        (1)使用Linux命令回收內存,可以使用ps、kill兩個命令檢測內存使用情況和進行回收。在使用超級用戶權限時使用命令“ps”,它會列出所有正在運行的程序名稱和對應的進程號(PID)。kill命令的工作原理是向Linux操作系統的內核送出一個系統操作信號和程序的進程號(PID)。

        下面舉例說明,為了高效率回收內存可以使用命令ps參數v: #ps v

        PID TTY   STAT  TIME MAJFL  TRS  DRS RSS %MEM COMMAND

        2530 vc/1   S   0:00  104   6 1325 408 0.1 /sbin/mingetty tty1

        2531 vc/2   S   0:00  104   6 1325 408 0.1 /sbin/mingetty tty2

        2532 vc/3   S   0:00  104   6 1325 408 0.1 /sbin/mingetty tty3

        2533 vc/4   S   0:00  104   6 1325 408 0.1 /sbin/mingetty tty4

        2534 vc/5   S   0:00  104   6 1325 408 0.1 /sbin/mingetty tty5

        2535 vc/6   S   0:00  104   6 1325 408 0.1 /sbin/mingetty tty6

        2639 pts/1  S   0:00  545  16 2643 968 0.3 [su]

        2684 pts/1  S   0:00  361  5


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 文登市| 略阳县| 日土县| 襄垣县| 丘北县| 西峡县| 化隆| 灵武市| 镇巴县| 瑞金市| 土默特右旗| 清新县| 枣强县| 张家港市| 宁化县| 定安县| 息烽县| 农安县| 海伦市| 北京市| 东乡族自治县| 商丘市| 抚顺市| 托里县| 宁远县| 彩票| 桃江县| 沁阳市| 商洛市| 汤原县| 隆回县| 香港 | 马尔康县| 泰州市| 赤城县| 汕头市| 兖州市| 无极县| 东乡县| 边坝县| 资讯 |