1. 程式人生 > >解決linux虛擬記憶體不夠用的方法

解決linux虛擬記憶體不夠用的方法

虛擬記憶體 (swap)

虛擬記憶體就是將硬碟規劃出一個區 間,讓記憶體的資料可以經由硬碟來讀取。 建立和擴大swap:

建立虛擬記憶體裝置

第一種正規的方法是『直接再加一硬碟,並且將其中某個分割槽規 劃為 swap 的 filesystem 』:思路是:用fdisk建立後,再格式化為swap。再將 swap 啟動,啟動的指令為 『 swapon /dev/hd[a-d][1-16] 』! 直接 swapoff 就能關掉。

建立虛擬記憶體檔案

使用 swap file 的方 式來新增硬碟!

以 dd 指令來建 立 swapfile ;

# dd if=/dev/zero of=/tmp/swap bs=4k count=16382

16382+0 records in

16382+0 records out

# dd 這個指令是用來轉換文 件並且 copy 用的;if 指的是要被轉換的輸入檔案格式 /dev/zero ,of 指的是輸出的檔案,輸出到 /tmp/swap 這個文 件;bs 指的是一個扇區佔用幾個 kb ;count 指的是要使用多少個 bs 。相乘就是容量。

mkswap /tmp/swap        (格式 化,務必注意書寫正確,否則後果很嚴重)

Setting up swapspace version 1, size = 67096576 bytes

# swapon /tmp /swap        (啟動他)這樣就已經將虛擬記憶體增加64 MB了 !如果每次都想啟動該檔案,那麼將 swapon /tmp/swap 寫 入/etc/rc.d/rc.local 中。

# free        (檢視下swap)

。。。。中間省略

Swap:       192524       2620     189904

# swapoff /tmp/swap          (關掉他)

此外,如果當初建系統的時候,沒有完全劃分硬碟空間,可以新建個分割槽,格式化 為swap,然後掛載到/tmp/swap目錄上,達到擴容目的。

swap工作原理是 :當實體記憶體不夠時,則某些在記憶體當中所佔的程式會暫時被 移動到 swap 中,讓實體記憶體可以被更需要的程式來優先使用。因此,虛擬記憶體只是緩解作用,速度肯定沒法和實體記憶體比,優化的最好辦法就是買記憶體。另 外, 系統可以進入『休眠』模式,運作當中的程式狀態會被紀錄到swap去,以作為『喚醒』主機所用!最後有某些程式在執行時,本來就會利 用 swap 的特性來存放一些資料段,所以swap 是需要建立的!只是不需要太大。

swap 在被建立 時,是有限制的:

·  S wap有數量和大小限制,不過不同版本系統限制不一樣。

·  目前 x86_64 (64位) 最大記憶體支援到 64GB, 因此swap總量最大也是僅能達 64GB!