|我是誰|我的最愛|一些照片|好文章|生活知訊|討論留言板|寫信給我|首頁|

怎樣提高愛機的資源率? (本區共瀏覽次)


資料來源:

  怎樣提高愛機的資源率?

2002-9-19
在說到解決方案之前,有必要先解釋一些更細節的問題。首先,系統資源基本上就是小段的記憶體,Windows 95/98爲應用程式需要與作業系統通訊時使用而留出此段記憶體。在正常的環境下,Windows 95/98專用于系統資源的集中備用記憶體部分足以維持多數運行應用程式的需要。

但是,並不是所有的應用程式都可靠地使用系統資源。一些應用程式會佔用多於它們需要的系統資源,而其他的程式沒有在它們結束運行後正確地返回給系統資源備用記憶體。那些沒有返回的系統資源隨即丟失,而資源記憶體減少。如果系統資源損耗繼續下去,就有可能使得Windows 95/98性能降低並最終崩潰。

如果你和大多數的人們一樣,首先在你的大腦中浮現的資訊就是“我的系統有足夠的記憶體,那對我是不可能發生的情況!”可惜的是,專用於Windows 95/98系統資源的記憶體數量是全部實際記憶體量的很小一部分。基本上,這就意味著無論你在你的系統上安裝多少記憶體――8MB或128MB――你在運行多個應用程式的時候都會用完可用的系統資源。

當應用程式在Windows中運行時,Windows必須即時“跟蹤”該應用程式的運行,並保留與之相關的許多資訊,如按鈕、游標、功能表的位置和點陣圖、視窗的狀況等,這些資訊由Windows保留在一種叫堆的記憶體塊中,堆的英文爲Heap。簡單地說,堆是採用特殊機制管理的記憶體塊。由Windows的一個系統內核User.exe管理的堆叫作User資源堆(User Resource Heap),由另一個系統內核Gdi.exe管理的堆叫作GDI資源堆(Graphical Device Interface Resource Heap,簡稱GDI Resource Heap),User資源堆和GDI資源堆合稱爲系統資源堆(System Resource Heap),習慣上就把它們叫作系統資源(System Resource)。

微軟將Windows的系統資源(堆)分爲五個堆,其中User資源堆爲三個,而GDI資源堆爲兩個。

三個User資源堆分別是:16位的用戶堆(User Heap,64KB);32位元的窗口堆(Windows Heap,2MB);32位元的用戶功能表堆(User Menu Heap,2MB)。

兩個GDI資源堆分別是:16位的GDI堆(GDI Heap,64KB);32位的GDI堆(GDI,2MB)。

從這裏的系統資源分類和大小我們應該明白,不管CPU是P4還是486,記憶體是8M還是1G,所有Windows的用戶都擁有同樣大小的系統資源(堆),用戶不能自己增加或減少系統資源的大小,這是由作業系統決定的,與硬體檔次沒有任何關係。

Windows的User資源堆和GDI資源堆的可用(Free)空間稱爲可用 User資源和可用GDI資源,Windows中以百分數表示它們,用戶可以選擇 “開始/附件/系統工具/資源狀況”,來即時查看它們的大小。注意,“資源狀況”不是Windows的默認安裝元件,使用典型安裝的用戶需自己添加上去。

接下來,我們要說說爲什麽可用系統資源會不斷減少的問題——

當一個應用程式在Windows中被載入時,Windows自動地將可用User資源堆和可用GDI資源堆中的一部分空間分配給它,而當應用程式退出時,這部分空間也應該由Windows收回以交給別的應用程式使用。但實際上幾乎所有的Windows 用戶都發現:一個應用程式載入前和退出後可用系統資源的值是不相等的,而且隨著應用程式的不斷載入和退出,隨著Windows使用時間的增加,資源狀況顯示的可用系統資源也在不斷減少。

微軟的正式解釋是:

* 系統初始化

Windows在啓動時要進行系統初始化(System Initialization)的過程, Windows的系統初始化屬於延時初始化。例如,Windows在啓動時只初始化當前使用的字體,以後當應用程式要使用到尚未被初始化的字體時, Windows才會初始化該字體,這種由應用程式根據需要提出要求而發生的初始化服務就是所謂的延時初始化。對於屬於延時初始化的服務, Windows還採用了特別的管理方式,當向Windows提出延時初始化服務的應用程式退出後,與延時初始化服務相關的系統資源(例如上面提到的與新字體有關的系統資源)不會隨著應用程式的退出而馬上釋放,這是造成應用程式載入前和退出後可用系統資源的值不相等的原因之一。Windows不馬上收回與延時初始化服務,是爲了防止該應用程式或別的應用程式以後又向系統提出同樣的初始化服務而導致系統不斷重復服務而浪費時間。例如對於載入同一應用程式,第二次載入的時間會明顯少於第一次,顯然延時初始化功不可沒。

* 相容性

在Windows中運行的所有16位元應用 程式共用相同的位址空間,當其中某一個16位元應用程式正常退出或出現錯誤而被關閉時, Windows 9X並不馬上收回這個應用程式所佔用的系統資源,這也是造成一個應用程式載入前和退出後可用系統資源的值不相等的又一個原因。只有當所有的16位元應用程式全部退出後,Windows才能安全地收回被這些程式佔用的系統資源,此時可用系統資源才會恢復到原值。之所以這樣設計,主要是考慮到要讓Windows 9X能繼續運行大量的16位元應用程式。

* 資源泄漏

按上述解釋,可用系統資源的不斷減少是正常的,這是 Windows的設計目的之一。但是許多人在實際工作中還發現在其他一些情況下Windows也會不能完全收回系統資源,這也導致可用系統資源不斷減少,程式師稱這種現象爲資源泄漏(Resource Leak)。微軟開始並未承認,但是隨著證據的不斷增加,最後還是不得不承認其中的一些現象是存在的。

比如一個程式還未完成其載入過程時(即還沒有啓動完畢)就關閉它會造成資源泄漏,而且只有重新啓動才能回收。

另外一些應用程式退出後Windows並不馬上收回分配給它的系統資源,而是保持15分鐘左右,到Windows完全肯定不再需要時才將它們收回,這可以看作是延時初始化的一種延伸。

用戶使用“Ctrl+Alt+Del”強制性地關閉一些應用程式會造成資源泄漏,因此用戶應該儘量使用應用程式本身的關閉功能退出應用程式,只有實在沒辦法時才使用這種關閉方法。因爲這種強制關閉應用程式的方法往往只能關閉主程序,而不能關閉應用程式的一些副程式,因此會導致一些系統資源發生泄漏。

一些編寫不善的應用程式會造成資源泄漏。一個應用程式在運行中往往會因出現意外而崩潰,若程式師在編寫應用程式時沒有考慮到這種意外情況的出現,並在應用程式中有相應的代碼處理這種意外,那麽當該應用程式非正常關閉後,該應用程式所佔用的系統資源就不能由Windows收回。

還有一些應用程式,即使是正常關閉也不會釋放它所佔用的系統資源,這樣的應用程式被程式師稱爲“垃圾”,電腦用戶絕對不要使用這樣的軟體。

還有一些實際存在而微軟也沒有給予解釋的情況。比如用戶上網結束後關閉撥號網路中的網路連接,然後按Ctrl+Alt+Del看看,一定會發現有一個名爲rnaap(英文版)或者rnaapp(中文版)的程式還在運行,這是什麽東西?其實這是撥號網路用來撥通ISP的遠端網路訪問程式(Remote Network Access Application Program),在用戶登錄網路的時候這個程式被運行,但是在用戶從網路登出後它本身並未退出。這不免讓人産生這樣一個疑問:在這樣一個龐大的Windows系統中,到底還有多少這樣那樣的例外存在呢?

關於系統資源泄漏的問題還有許多,但在這裏我們不再對它們進行詳細的分析和解釋,先看看應該如何解決這些問題——

1.準確地來講,Windows中並不存在一個有著實際意義的系統資源。可用系統資源一定等於可用User資源和可用GDI資源中值較小的那一個。

2.Windows的可用User資源是根據所有User資源堆中可用空間最小的那個資源堆計算出來的;可用GDI資源的計算方法也是一樣。爲了保持與16位元應用程式的相容性, Windows 9X的大量資料都要使用16位元64KB資源堆,這導致總是16位64KB的資源堆首先被大量消耗,因此在 Windows 9X中,限制系統資源使用的是64KB的資源堆而不是2MB的資源堆。

3.系統資源是用來跟蹤應用程式的運行而不是用來運行應用程式的,就像公路上車多車少,並不是車稍微多點就沒有辦法開車了。因此可以肯定地說,影響電腦系統性能的是電腦系統其他的因素,而絕不會是可用系統資源的大小。當用戶電腦系統性能明顯降低時,應該從別的方面去查找原因,而不要馬上懷疑到系統資源身上。從硬體方面來看,記憶體太小導致系統不得不頻繁使用虛擬記憶體是影響系統性能的主要原因之一;從軟體方面來看,因爲Windows是一個多工的作業系統,大家都習慣同時運行多個應用程式而不管當時是否實際需要。而編寫和調試這些應用程式的程式師一般只考慮其在單任務環境下的運行,而沒有過多的精力從多工環境來考慮和調試,因此許多應用程式間往往不能很好地協同工作,同時運行多個這樣的應用程式會因它們彼此之間發生衝突而導致系統性能下降。當然,Windows 9X多工管理機制的不完善也是造成這個問題的主要原因之一。

4.雖然可用系統資源的減少不會對系統的性能有任何影響,但是其值最好不要小於15%,小於此值帶來的直接後果是Windows將拒絕啓動任何新的應用程式,而副作用是系統崩潰的可能性大大增加。

5.Windows本身也要佔用系統資源,因此絕對沒有哪個Windows用戶的可用系統資源會是百分之百,要保持有更多的可用系統資源的方法是不要同時運行太多的應用程式。Windows和它的許多應用程式都有一個不經用戶同意就自動載入東西的壞毛病,大家可以運行Msconfig.exe來關閉一些沒有必要自動載入的應用程式,如ICQ、電子詞典和超級解霸的自動播放伺服器等。

6.不要將系統資源和CPU資源(CPU使用率)相混淆,硬碟、光碟機、軟貓的資料處理、顯卡的3D圖像處理、音效卡的3D音效處理佔用的都是CPU時間(即消耗CPU資源),而不是系統資源,這些硬體設備的先進與否與佔用系統資源的多少根本沒有任何關係。按習慣,談到硬體的資源佔用一般是指其CPU資源的佔用,而軟體的資源佔用既包括CPU資源佔用又包括系統資源(堆)佔用,但電腦用戶關心的一般是後者,因此談到軟體的資源佔用時一般是指其對系統資源的佔用。

(注意,這裏所提到的與系統資源有關的各種問題只適用於Windows 3.X、Windows 9X和Windows Me,而不適用於Windows NT、Windows 2000和Windows XP,因爲它們設計和管理系統資源的機制是不同的。)

說到這裏,我們可以知道系統資源都被誰佔用了——

1、啓動時需要載入的系統運行文件,設備驅動程式。(.dll .vxd .sys……)

2、任務欄的應用程式(病毒防火牆、計劃任務、聲音和輸入法指示器、電源管理、多媒體播放軟體……)

3、Windows的圖形介面(桌面和功能表圖示、背景、桌面主題、螢幕保護程式……)

4、以MS-dos方式運行的軟體(如:載入了EMM386.exe、音效卡的DOS驅動……)

5、應用程式廢棄的動態鏈結文件文件(.dll……)

6、多次重復運行大型軟體如Word等,也會造成系統資源減少。

7、安裝過多的軟體也會減少系統資源(如果你的MP3播放器就安裝了5、6種,那麽系統資源肯定會相應的有所減少)。

當然,這裏羅列出的並非全部原因,但主要是這些。針對這些原因,建議大家——

1、啓動時儘量減少系統啓動時輔助軟體的載入,如:防火牆軟體、QQ等,以免它們駐留記憶體,在需要時再運行它。在“開始”功能表下的“運行”中鍵入“MSCONFIG”,按“確定”按鈕,再在出現的“系統配置實用程式”介面中按“啓動”標簽,取消對無需載入程式的選中狀態,按“應用”或“確定”按鈕,然後重新啓動電腦,該自動載入程式就被取消了。

2、去掉Windows那些華而不實的東西,如:螢幕保護程式、桌面主題程式、計劃任務程式、WEB方式桌面……

3、整理記憶體碎片,用Windows優化大師中附帶的“磁片緩存優化”→“記憶體優化”,可以顯著增加系統資源。

4、優化桌面的圖示,功能表等專案。減少桌面上快捷方式圖示以及定期、不定期清理開始功能表。快捷方式圖示和開始功能表中專案是消耗GDI資源以及USER資源的大戶,儘量減少桌面快捷方式圖示和保持一個整潔有序簡明的開始功能表是節約資源的又一重要方法。要做到對不用的桌面快捷方式圖示進行刪除;桌面快捷方式圖示與開始功能表下程式子功能表中重復的專案根據操作習慣選取一個即可,另一個可予刪除;把同類型程式組織到一個文件夾中,減小開始功能表體積。例如可將所有Office元件組織到一個文件夾Office中,將Internet Explorer、 Internet News、Outlook Express、Microsoft Netmeeting 等組織到Internet文件夾;去掉一些不常用的專案,卸載“幫助”、“readme”等的快捷方式。

5、在不上網、不安裝新軟體的情況下,儘量不要打開病毒防護以及防火牆,可以減少一些隨意重啓,非法操作和死機的發生。

6、在Windows的圖形環境下,沒有必要載入音效卡的MS-DOS驅動程式。

7、不要同時運行兩個及更多大的軟體,如:圖形軟體,音頻壓縮,以及刻錄軟體,不要在一個大程式沒有回應完時,打開其他大的軟體。

8、去掉“計劃任務”的運行。一般情況下我們不會用到它,而它所能執行的維護任務,大多都能用手動的方法進行運行。如果去掉“計劃任務”的運行,至少能節約2%的系統資源。方法是:在計劃任務的圖示上雙擊,在彈出的視窗中選“高級”功能表,從中找到 “終止執行計劃任務”單擊之。

9、設置在同一窗口瀏覽文件夾。在Win98中,系統默認設置已經是使用同一視窗進行文件夾瀏覽,一般不需再另行設置。

10、用小程式釋放記憶體。最簡單的回收系統資源的方法就是親手製作一個小程式來釋放記憶體,這樣即可簡單、方便、有效地整理記憶體碎片。其實這個小程式就是兩個VBString語句。新建一個文字檔案,然後在裏面鍵入:

Mystring = Space(16000000)或Mystring = Space(80000000)。

前者適於記憶體小於128MB但大於32MB的電腦,後者適合記憶體等於或大於128MB的電腦,可以根據自己的情況選擇,然後將其保存爲memory.vbs。建議將其放在桌面,這樣在任何時候你可以雙擊它來整理記憶體碎片。如果在使用後者時出現了問題,那麽可以改爲前者的語句。另外,在運行它之前建議關閉其他所有程式,這樣才能得到最好效果。

11、合理地設置虛擬記憶體的大小,並使它儘量處於連續的硬碟空間中以加快執行速度。

12、如果覺得系統資源太少,不妨重新啓動機器,這樣會使你的系統資源恢復。

13、如果用了各種優化方法,本機的系統資源都停留在85%以下,此時建議您重裝系統,這是個一勞永逸的大法!

應該說,解決系統資源不足的辦法還不止這些,不過上面這些也差不多夠用了。
摘自狗狗靜電BBS 作者:LION 



開始留言:(注意!!!留言請勿超過300字)

言者: 性別: 年齡: 星座: 地區: 心情:

 

連結: 密碼:       


分享funP收進你的MyShare個人書籤plurktwitter

這是本區第5篇貼文  貼文時間: 2014年6月30日星期一 16時42分1秒   小編:MagicLin in 新竹市 歡喜貼文

最新更新頁面 上一層 上一篇 下一篇 回到本頁頂端 

|我是誰|我的最愛|一些照片|好文章|生活知訊|討論留言板|寫信給我|首頁|