2009年1月28日 星期三

[轉錄]為什麼Linux的記憶體總是快用光的樣子?

我在 Windows 下做過的一件最傻的事情莫過於"釋放記憶體"了。
有一天我看到一個 Windows 程式說:"這個程式可以幫你把大量記憶體釋放出來給一個很大的程式用。

"我試了一下,居然一下把我的 64M 記憶體釋放出來 48M!我高興極了。

現在想一想,那是多麼傻的事情,那麼多的記憶體留著幹什麼?不用白不用啊!一作業系統,居然還需要別人寫的程式來釋放記憶體,那是什麼樣的作業系統?

在 Linux 下用 free 命令,你會發現你的記憶體幾乎每時每刻都快要被用完。
那是因為 Linux 把大部分記憶體用來作為磁片緩衝了。Linux 有比 Windows 先進的磁片緩衝技術。
你有沒有發現你往硬盤寫數據的時候,很快就完成了?

那 是因為 Linux在記憶體裏有很多磁片緩衝區,你要寫到硬盤上的數據先被寫到了這些記憶體裏,然後 Linux 就告訴你"拷貝完成",當你馬上又想刪除剛才寫入的某些數據時,Linux 只是把數據從記憶體裏移除,然後報告"刪除完成".在一定的間隔時間後,Linux 才把數據寫回硬盤,這樣不但高效,避免了多次硬盤操作

而且減少了文件的不連續,也就是減少了"碎片".Windows 當然也有磁片緩衝,但是由於它記憶體管理的低效率,它不敢把大量記憶體都用來作為磁片緩衝,因為它沒有能力在用的時候隨時把記憶體收回來。

0 意見:

張貼留言