如何使Linux支援4G以上記憶體

時間 2022-10-07 20:11:16

1樓:鋼神綠鋼

安裝64位linux系統。

如何手動釋放linux記憶體?

2樓:吉祥二進位制

linux釋放記憶體的命令:

sync

echo 1 > /proc/sys/vm/drop_caches

drop_caches的值可以是0-3之間的數字,代表不同的含義:

0:不釋放(系統預設值)

1:釋放頁快取

2:釋放dentries和inodes

3:釋放所有快取

釋放完記憶體後改回去讓系統重新自動分配記憶體。

echo 0 >/proc/sys/vm/drop_caches

free -m #看記憶體是否已經釋放掉了。

如果我們需要釋放所有快取,就輸入下面的命令:

echo 3 > /proc/sys/vm/drop_caches

######### linux釋放記憶體的相關知識 ###############

在linux系統下,我們一般不需要去釋放記憶體,因為系統已經將記憶體管理的很好。但是凡事也有例外,有的時候記憶體會被快取占用掉,導致系統使用swap空 間影響效能,例如當你在linux下頻繁訪問檔案後,物理記憶體會很快被用光,當程式結束後,記憶體不會被正常釋放,而是一直作為caching。,此時就需 要執行釋放記憶體(清理快取)的操作了。

linux系統的快取機制是相當先進的,他會針對dentry(用於vfs,加速檔案路徑名到inode的轉換)、buffer cache(針對磁碟塊的讀寫)和page cache(針對檔案inode的讀寫)進行快取操作。但是在進行了大量檔案操作之後,快取會把記憶體資源基本用光。但實際上我們檔案操作已經完成,這部分 快取已經用不到了。

這個時候,我們難道只能眼睜睜的看著快取把記憶體空間佔據掉嗎?所以,我們還是有必要來手動進行linux下釋放記憶體的操作,其實也就是 釋放快取的操作了。/proc是乙個虛擬檔案系統,我們可以通過對它的讀寫操作做為與kernel實體間進行通訊的一種手段.

也就是說可以通過修改 /proc中的檔案,來對當前kernel的行為做出調整.那麼我們可以通過調整/proc/sys/vm/drop_caches來釋放記憶體。要達到釋 放快取的目的,我們首先需要了解下關鍵的配置檔案/proc/sys/vm/drop_caches。

這個檔案中記錄了快取釋放的引數,預設值為0,也就 是不釋放快取。

一般複製了檔案後,可用記憶體會變少,都被cached占用了,這是linux為了提高檔案讀取效率的做法:為了提高磁碟訪問效率, linux做了一些精心的設計, 除了對dentry進行快取(用於vfs,加速檔案路徑名到inode的轉換), 還採取了兩種主要cache方式:buffer cache和page cache。

前者針對磁碟塊的讀寫,後者針對檔案inode的讀寫。這些cache有效縮短了 i/o系統呼叫(比如read,write,getdents)的時間。"

釋放記憶體前先使用sync命令做同步,以確保檔案系統的完整性,將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 i/o 和讀寫對映檔案。否則在釋放快取的過程中,可能會丟失未儲存的檔案。

[[email protected] ~]# free -m

total used free shared buffers cached

mem: 7979 7897 82 0 30 3918

-/ buffers/cache: 3948 4031

swap: 4996 438 4558

第一行用全域性角度描述系統使用的記憶體狀況:

total 記憶體總數

used 已經使用的記憶體數,一般情況這個值會比較大,因為這個值包括了cache 應用程式使用的記憶體

free 空閒的記憶體數

shared 多個程序共享的記憶體總額

buffers 快取,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)

cached 快取,用於已開啟的檔案

第二行描述應用程式的記憶體使用:

-buffers/cache 的記憶體數:used - buffers - cached

buffers/cache 的記憶體數:free buffers cached

前個值表示-buffers/cache 應用程式使用的記憶體大小,used減去快取值

後個值表示 buffers/cache 所有可**用程式使用的記憶體大小,free加上快取值

第三行表示swap的使用:

used 已使用

free 未使用

可用的記憶體=free memory buffers cached。

為什麼free這麼小,是否關閉應用後記憶體沒有釋放?

但實際上,我們都知道這是因為linux對記憶體的管理與windows不同,free小並不是說記憶體不夠用了,應該看的是free的第二行最後乙個值:-/ buffers/cache: 3948 4031 ,這才是系統可用的記憶體大小。

實際專案中的經驗告訴我們,如果因為是應用有像記憶體洩露、溢位的問題,從swap的使用情況是可以比較快速可以判斷的,但free上面反而比較難檢視。我覺得既然核心是可以快速清空buffer或cache,但核心並沒有這樣做(預設值是0),我們不應該隨便去改變它。

一般情況下,應用在系統上穩定執行了,free值也會保持在乙個穩定值的,雖然看上去可能比較小。當發生記憶體不足、應用獲取不到可用記憶體、oom錯 誤等問題時,還是更應該去分析應用方面的原因,如使用者量太大導致記憶體不足、發生應用記憶體溢位等情況,否則,清空buffer,強制騰出free的大小,可 能只是把問題給暫時遮蔽了,所以說一般情況下linux都不用經常手動釋放記憶體。

如何使32位linux支援4g以上記憶體

如何將我linux系統的4g記憶體佔滿

3樓:匿名使用者

linux就是這樣的,linux與windows不同,會存在快取記憶體,通常叫做cache memory。

當你讀寫檔案的時候,linux核心為了提高讀寫效率與速度,會將檔案在記憶體中進行快取,這部分記憶體就是cache memory(快取記憶體)。即使你的程式執行結束後,cache memory也不會自動釋放。這就會導致你在linux系統中程式頻繁讀寫檔案後,你會發現可用物理記憶體會很少。

其實這快取記憶體(cache memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。

除非你的swap空間被大量使用,這才說明的物理記憶體不足。

怎麼讓fat32格式支援4g以上的記憶體?最簡單的方法哦

4樓:仝芷容

fat32 是先天性就不支援大於4g的檔案 而你說的4g記憶體要64位系統才支援的

如果是fat32支援大於4g檔案 只要用convert d:/fs:ntfs d:就是你要轉換的碟符

換成你需要轉換的盤就行 不會丟失資料

5樓:匿名使用者

將fat32格式轉為ntfs格式,就沒問題了.

最簡單的方法如下.還不會丟失檔案

假定我們要轉換的磁碟是d盤:

1、單擊「開始」選單中的「執行」命令。

2、在「執行」命令視窗中輸入「convert d:/fs:ntfs」,並單擊「確定」按鈕。

3、應用程式會給出磁碟空間總量、可用空間量及轉換所需空間量等引數,此後轉換就開始了。根據轉換內容的數量不同,所需時間也不同。

4、轉換完畢應用程式提示「檔案系統轉換完畢」。

5、確定並退出。

不過您的提問有錯誤,您肯定是問的是支援4g以上的檔案...

6樓:青島曉哥

不是很明白你的意思,導致系統不識別4g以上記憶體的不是fat32檔案分配表,而是因為32位的系統物理定址上限是4g。而fat32檔案分配表,是導致所在分割槽不支援單個檔案大於4g的原因。

如果你確實指的是記憶體,可以換用64位作業系統,windows7和xp都行。

如果你指的是單一檔案的大小,只能換成ntfs,別無他路。

祝你好運

7樓:匿名使用者

你要說的是硬碟的檔案還是記憶體? fat32只是不支援4g以上的硬碟檔案和資料夾,跟記憶體沒關係

如何在linu下使用,如何在Linux下使用MySQL

樓主會 sql 查詢命令不?如何在linux下安裝mysql 1 安裝cmake tar zxf untar cmake 288targz pushd cmake 288 bootstrap gmake gmake install popd 2 建立使用者 groupadd mysql userad...

linux下怎樣使root localhost root root server root

root localhost root中第乙個root表示當前登陸的為root賬戶 localhost是主機名稱 第二個root表示當前的目錄為root目錄 表示當前為root許可權 root localhost 中的 表示當前在登陸使用者的家目錄 root使用者的家目錄為 root,其他使用者通常...

如何檢視linux版本,如何檢視Linux核心版本及發行版本

介紹怎麼檢視linux系統版本 如何檢視linux核心版本及發行版本 如何檢視linux系統的版本號 介紹怎麼檢視linux系統版本 輸入 uname a 可顯示電腦以及作業系統的相關資訊。輸入 cat proc version 說明正在執行的核心版本。如何檢視linux核心版本?linux怎麼檢視...

如何用linux建立,如何用linux建立eth

美男子 你直接cp etc sysconfig network scripts ifcfg eth0 etc sysconfig network scripts ifcfg eth1 然後再改一下裡面的 引數就行 但還是建議你使用setup來設定ip位址 用setup會自動生成ifcfg eth1 ...

linux 如何設定環境變數,Linux 如何設定環境變數

1 環境變數不建議修改2 你可以臨時修改一些比如 ps1 pwd 當然這些是全域性的。如果你想修改某個使用者的,可以這樣 vi bash profile隨便寫一行 echo hello 當然你也可以寫變數 echo date 登陸時,你就會看到結果!你可以在shell下 輸入 echo path 注...