搜索

展開

小喇叭     

全站
2018-08-27
全站
2018-06-02
全站
2018-05-10
全站
2018-04-07
全站
2018-04-07
全站
2018-04-07
全站
2018-04-07
全站
2018-04-07
全站
2018-04-07
全站
2018-03-26

[轉載] 用了1G或以上的記憶體還是這麼慢的原因

  [複製鏈接]
MapleSky [樓主] 發表於 2008-11-10 01:01:36 | 顯示全部樓層 |閱讀模式
MapleSky [樓主]
2008-11-10 01:01:36 1785 6 看全部
Windows用1G記憶體還是這麼慢的原因分析現在的記憶體基本達到了1元/MB的均價,不少朋友的電腦告別了可憐的64MB、128MB記憶體,256MB已經成為標準配製,512MB甚至1GB的記憶體也不再是"聳人聽聞"。

但是有一件事情讓很多朋友疑惑:"為什麼使用1G記憶體我的Windows啟動、軟體運行速度還是這麼慢?" 安裝大容量記憶體後,系統、程式運行效率沒有得到大幅度提高,這是因為系統本身運行機制限制了其管理和運用硬體資源的能力。所以縱然硬體資源非常豐厚,如果超出了Windows管理的範圍,那麼性能也不會得到明顯提升。

記憶體和硬碟許多菜鳥常常將實體記憶體和硬碟混淆在一起,因為兩者的容量都是用MB或GB這類的單位表示,說明實體記憶體和硬碟之間關係的最好比喻是:一個帶一張桌子和一個檔櫃的小辦公室。

檔櫃就像硬碟,程式和資料可以長期安全地存放在那裏,桌面代表實體記憶體,允許在辦公桌上工作的人(作用和處理器相同)直接用放在桌面上的任何檔(程式和資料)。為了對一個特定檔進行操作,首先必須從檔櫃中取出檔並放在桌面上。如果桌面夠大,可以在桌面上同時打開多個檔。類似地,如果你有更多實體記憶體,那麼可以運行更多或更大的程式並對更多或更大的資料進行處理。

給電腦增加硬碟空間就好比在辦公室裏放一個更大的檔櫃,而增加更多記憶體就好比得到一個更大的辦公桌,可以同時對更多程式和資料進行操作。 一、Windows這樣使用記憶體想要知道為什麼系統速度提升不再明顯,必須先理解Windows 怎樣使用記憶體。這裏要涉及一個概念——資源。

這不是平時所說的CPU資源,記憶體資源或統一的"系統"資源。我們接下來要講到的"資源"就是程式可以操縱的Windows物件。舉例來說,螢幕上顯示的每個視窗都是一個資源,每幅圖片也都可以能是一個資源。如果一個應用程式打開了磁片上的一個檔,那麼這個被打開的檔也是一個資源。以此類推,如果一個應用程式需要使用一個資源,它就會向作業系統提出請求,要求新建一個或從記憶體裏調用。


1.情景再現:程式與系統的對話 程式說:"嗨,Windows,我要新建一個300圖元寬,200圖元高的視窗,ok?"於是,Windows立即按要求創建或調用這個資源進記憶體,然後反饋給應用程式一個代號:"好,我已經創建好你要的視窗,它的代號是#38710。"此後,需要用到新建的這個視窗時,應用程式都用Windows反饋的代號代表這個資源。"Windows,麻煩你在顯示幕幕左上角顯示#38710。""好!"最後,當應用程式不需要用到該資源的時候,它會要求Windows去除這個資源。"OK,請你刪除#38710。""好!"。


2.指標——記憶體中的郵遞區號 那麼這個代號是依據什麼標準生成的呢?在絕大多數作業系統中,它是靠一種叫做"指針"的東西來確定的。你可以把整個記憶體想像成一個郵局,郵遞員把需要寄往各地的信件分類放到很多個不同的信箱裏。信箱一個接一個,足足佔據了一堵牆。每個心細那個都裝了一些信件,包含要送往一個特定地區的資訊。而且,就好像每個地區都有郵遞區號一樣,每一塊可以存儲資料的記憶體空間也有一個位址——指標。代表這個存儲空間的一串數位。記憶體中某部分數據的"指標",也就是這些資料佔據的第一處記憶體空間的位址。所以,如果我是一個普通的作業系統,有一個應用程式要求我調用一個視窗,我就會按照它告訴我的要求調用這個視窗進記憶體,如果這個資源的資料在記憶體中存儲的位址開始於#1234567,那麼我就會返回一條資訊給應用程式:"好了,我調出了這個視窗,它是#1234567。"


3.解決指標帶來的問題 在PC中,這種指標有4個位元組長。所以如果一個應用程式需要給記憶體裏的某個資料配一個指標,那就需要4位元組的記憶體空間。這樣的工作方式給早期的Windows設計者帶來了不小的麻煩,因為那時製作工藝尚不發達,記憶體非常昂貴,一台電腦上有8MB的記憶體就足以讓用戶無數次從夢裏笑醒了,大多數電腦只能配製4MB記憶體。在記憶體如此緊張的情況下,一個應用程式卻經常需要用到幾百萬個資源。要用這些資源,就要個每個資源配發一個指標。每個指標佔據4個位元組,幾百萬個指標,就會消耗掉數量客觀的一塊記憶體空間。這就好比一份錢很少,但如果要發給全國人民每人一份錢,那就是至少一千三百萬元的鉅款了。

所以,Windows設計者採用了另外一種替代方案。他們創建了資源表。就是把當前調入記憶體的所有資源的資訊登記到一個清單。這樣一來,當應用程式要求系統調用一個資源時,系統調用後就不給它配發指標了,而是直接告訴應用程式該資源在資源表中的序號。"好了,我已經調用了你需要的資源,它在資源表裏面的序號是#383"因為需要不是記憶體位址,所以就可以用一個只需佔用2位元組的數位表示。這只是兩個位元組的差距。但當你只有幾MB記憶體,而你運行的程式動咎調用大量資源時,這兩位元組的差距就會帶來很大的優勢。

你知道嗎?微軟64位元作業系統沒1GB記憶體就別玩在32位Windows 2000/XP中,最大支援4GB的記憶體,每個應用程式最多只能使用2GB記憶體,因為另一半的記憶體也留給系統使用了。而在64位WindowsXP中,這個限制沒有了,每個程式能完全使用4GB記憶體,除Windows,微軟還在開發64位版本的SQL Server2000和Windows Server2003,不過要運行這些應用程式,需要你的電腦至少得有1GB記憶體。


4.時過境遷,妙計成缺陷但這種方法也有它的弊端——兩個位元組能夠表現的不同數位非常有限我們可以做個實驗:請你寫不同的數位。如果只准你寫一位數,那就只能寫出十個不同數位。如果限制寫兩位數,雖然能寫出更多,但總數仍然有限。以此類推,允許位數越多,能寫出的不同數位就越多。但只要位元數有限制,寫出的不同數字的總數就始終有限。同理,如果允許系統使用4位元組的序號,那麼在這個"位數限制"下,可以有幾十億個不同的序號可供使用。但如果只准系統使用2位元組序號,能用的序號就會銳減到65536個。於是,前面我們講的資源表就不能無限的拉長。其中的序號最多只有65536個 於是問題來了。當調用了65536個資源後,再想調用更多的資源,縱然記憶體空間還有1GB,足以存儲數百億個資源,但只有2位元組的資源表卻無法生成更多的序號!沒有序號,就意味著無法將各資源區分開來,應用程式自然無法使用這些沒有"戶口"的資源!事實上,因為沒有序號可用,系統根本無法同時調用65536個以上的資源。

但在10MB記憶體都是奢望的年代,要同時調用數十萬個資源根本就是"無稽之談"。所以當時的 Windows設計者們沒有把這個問題放在心上,果斷地選用了資源表,選用了2位元組序號。

今天,作業系統算是得到報應了。記憶體便宜了,資源表和2位元組序號仍然給我們節省了記憶體空間,但它帶來的壞處卻遠遠超過了它帶來的好處。我們有足夠的記憶體空間,可以調用數百萬個資源,但資源表裏面只有65536個序號!所以同一時間內,記憶體中只能有65536個資源!還有1GB記憶體空間可用?等著吧!


5.真正"耗資源"的是誰?明白了上面的道理,就不難分辨除了大個檔,大個程式外,真正消耗系統資源的是哪些程式了:
★ 調用大量細小資源,把桌面裝飾的花裏胡哨的軟體 ★ 各種多媒體播放軟體 ★ 監視系統的工具軟體 ★

能在字體功能表裏面預覽字體的應用程式(如MS Office) 另外,在Windows 9xn/Me中運行16位元程式(如DOS程式)時,Windows會劃定一塊記憶體供所有這類程式使用。除非所有16位元程式都已經關閉,這塊記憶體是不會被釋放的。


6.大記憶體的優勢到底在哪里? 難道大記憶體就沒有作用了嗎?記憶體廠商在騙錢?當然不是。當一個應用程式被啟動後, Windows的一些元件也隨之被啟動,這是很常見的事情。當應用程式被關閉,Windows會保留那些元件不關閉,因為可能很快還要用到。同理,程式啟動時調進記憶體的少數資源,也不會隨著程式關閉而退出記憶體。 這時,大記憶體的有時正可以得到體現了。一方面,大記憶體可以一次性容納大量資料,減少使用性能遠不如記憶體的硬碟作為虛擬記憶體使用的幾率,提高資料調用速度。另一方面,關閉程式過後,更多的常用資料會有充足的空間保留在記憶體中不被清除。一旦重啟程式,你會發現明顯比使用小記憶體時快!


二、大記憶體使用精要

遊客,如果您要查看本帖隱藏內容請回復

本樓點評(0) 收起

本帖被以下淘專輯推薦:

回復 論壇版權

使用道具 舉報

h81009696 發表於 2009-4-21 17:44:07 | 顯示全部樓層
h81009696
2009-4-21 17:44:07 看全部
QQQQQQQQQQQQQQQ

評分

參與人數 2威望 -2 楓幣 -5 收起 理由
MapleSky -1 -5 惡意灌水
PoINDY -1

查看全部評分

本樓點評(0) 收起
PoINDY 發表於 2009-8-27 18:56:28 | 顯示全部樓層
PoINDY
2009-8-27 18:56:28 看全部
我的電腦交給你了老大!

本樓點評(0) 收起
tw0034984 發表於 2009-10-18 20:48:25 | 顯示全部樓層
tw0034984
2009-10-18 20:48:25 看全部
我的電腦遊今天變快了   就是因為你大哥

本樓點評(0) 收起
愛愛愛 發表於 2010-7-30 22:02:20 | 顯示全部樓層
愛愛愛
2010-7-30 22:02:20 看全部
拍桌叫好


評分

參與人數 1楓幣 +2 收起 理由
MapleSky + 2 感謝支持

查看全部評分

本樓點評(0) 收起
幻乂wInG 發表於 2012-7-7 13:15:37 | 顯示全部樓層
幻乂wInG
2012-7-7 13:15:37 看全部
謝謝分享..

本樓點評(0) 收起
clook123456 發表於 2014-5-15 21:07:36 | 顯示全部樓層
clook123456
2014-5-15 21:07:36 看全部
QQQQQQQQQQQQQQQQQQQQ

評分

參與人數 1威望 -1 楓幣 -5 收起 理由
MapleSky -1 -5 惡意灌水

查看全部評分

本樓點評(0) 收起
  • 您可能感兴趣

查看:1785 | 回復:6

官方微信

手机版

手机APP

無圖板| 手機版| 小黑屋| MapleSky! |網站地圖楓幻魔空網站排名排行榜
( )
Copyright © 2001-2013 MapleSky!. All Rights Reserved.   Powered by 楓幻魔空 X3.4
快速回復 返回頂部 返回列表