IE 4.5 是記憶體神偷?
1999/02/04 12:30 pm 白萊恩
如果您是使用 Microsoft Internet Explorer 4.5 ,那可要注意了:因為 IE4.5 在記憶體管理方面的問題,如果您一次開啟存有太多照片的網頁,即可能會因為記憶體不足而導致當機。以下就是我們在近一個月以來仔細觀察所得出的結論,在此要感謝怪醫林博士的協助:

IE 4.5 的記憶體管理方式與一般正常的麥金塔軟體不同,根據林博士的推測,IE4.5 跟 AppleShare IP 6.1 一樣有「偷吃記憶體」的毛病。因為這個緣故 IE 4.5 會主動的偷取系統中「無用」的記憶體來使用,這個主意雖然乍看之下不錯,但是會有一些致命的問題,以下我們會再做解說。

如果您正在使用 IE 4.5,請到 Finder 下打開 About This Computer 視窗,這張圖片是白萊恩的電腦剛剛開啟 IE 4.5 時記憶體的使用情況。隨著您瀏覽網頁數目的增加,IE 4.5 會偷取越來越多的記憶體,在這裡的這張圖片就是當我們瀏覽完情報窯子網站中這近百張圖片後的記憶體配置狀況,您可以清楚的見到 IE 4.5 這記憶體神偷的威力。(請注意在應用程式的記憶體設定中我們只分配給 IE 4.5 僅僅 4 MBytes 的記憶體 。)

也許您會問「反正這些記憶體都是沒用的,偷來用也不錯啊!」的確不錯,但是這種假設是站在其他軟體都不會偷用記憶體的狀況下才能成立。如果在同一時間下有超過一個這種「記憶體神偷」在系統下出現,您的麥金塔馬上就會成為一部定時炸彈。而跟偷吃東西一樣的是,IE 4.5 雖然很會吃記憶體,但是要叫它把偷走的記憶體吐出來還給系統,可是只有結束程式一途。

根據我們這一個月以來實驗的結果,最容易造成當機的「奪命組合」,非常可笑的竟是微軟新發表的 IE 4.5 以及 Outlook Express 4.5。這其中若是再加上漢音輸入法 (中文版 Mac OS 8.5) 的協助,每天當機個七八次絕對是易如反掌。

其實在一月中白萊恩就已經發現了這個問題,不過也苦苦找不出解決的辦法;非常湊巧的,老地方附設醫務室服務的林博士在聽到了這個問題後倒是提出了一個相當有意思的建議,為了慎重起見,我們在測試了將近一個月後才將這個方法公佈。要先講明的是,雖然我們測試的結果這個方法對於減少當機有絕對的幫助,但是並不能完全的解決 IE 4.5 因為偷取記憶體所造成的問題。

在此我們要再次強調,我們雖然在這裡是拿 IE 4.5 做範例,但是根據我們的了解,這種「偷吃記憶體」的行為是蘋果電腦所允許的。根據一些熟知內情的軟體設計師向我們表示,蘋果確實鼓勵軟體設計師多多利用那些系統並未使用到的記憶體來當作暫存記憶體之用。但是可惜的是,MacOS 本身的記憶體管理功能有問題,所以當借用記憶體的應用程式數目開始增加之後,這些原本是無用的一大段記憶體就開始發生碎裂 (Fragmentation)的問題,最後導致記憶體不足的毛病。

好啦,說了這麼多理論,現在就要告訴大家解決這個毛病的辦法了:基本上有兩個辦法可以大幅減少大家在使用 IE 跟 OE 時當機的機會,第一個辦法不牽涉到刪除檔案比較沒有危險,適合您首先試用。第二種方法需要牽涉刪除一些系統檔案夾中的檔案,所以除非您知道自己在做什麼,我們並不建議您貿然嘗試。

《方法一》改變啟動軟體順序

這是根據我們假設 IE 4.5 利用閒置系統記憶體的條件下所想出來的,辦法非常簡單:由於作業系統使用記憶體的方式是採用根據應用程式的需要做區段預留的方式,所以只要確定最後啟動的應用程式是 IE 4.5 ,那麼絕大部份的未用記憶體都可以供 IE 使用。這也就間接的確保了不會出現因為記憶體不夠而導致當機的問題。

可是天下沒有免費的午餐,以上的做法有兩點問題:

  1. 就跟上面所說的一樣,如果您同時在跑其他的應用程式當中有跟 IE 4.5 一樣借用系統記憶體的習慣,那麼連續使用 IE 太久後照樣是難逃當機的命運。

  2. 由於在 IE 4.5 內就算是關閉視窗也無法歸還借用的記憶體,請您根據電腦內建記憶體的大小,自行根據 About This Computer 視窗中的資料,推斷何時應該退出 IE 4.5 後再重新啟動,好將借用的記憶體歸還。由於 MacOS 8.5 之後的記憶體管理系統,會直接利用記憶體中既有的資料快速的啟動剛退出又再重新啟動的軟體,所以這樣子做應該不致會打斷您工作的步調。您也可以趁此機會去喝口水伸個腿,畢竟在網路上逛太久也會容易發胖。 :)

《方法二》改變啟動軟體順序

如果前一個方法不能完全解決您的問題,或是您就是想要嘗試所有的方法,您可以到系統檔案夾裡的系統延伸 (Extensions) 檔案夾中將除了 Microsoft Component Library 和 MS Font Embed Library (PPC) 兩個系統延伸之外所有的 MS OLE Extension 通通丟掉。 (您可以在這些檔案的 Get Info 對話窗中間見到他們是 Internet Access 1.2 的配件。)

接著再重新啟動 IE 4.5 ,這時它應該會自動重新將最新版本的系統延伸檔案安裝在系統延伸檔案夾當中。這樣應當可以避免因為系統是使用由其他軟體所安裝的舊版 MS OLE Extension 所導致的問題。

最後,對於我們曾經提到 MacOS 8.5/8.5.1 記憶體問題的修改,現在已經有好心人作了修補程式放在網路上,這對於不會使用 ResEdit 的朋友可說是一大福音。不過必須警告您不要忘了要把這個程式安裝於備份的系統檔之中,以避免有不幸的事件發生。