欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 關(guān)于瀏覽器內(nèi)存占用的一點思考 [打印本頁]

作者: 51黑芯片    時間: 2016-1-17 00:27
標題: 關(guān)于瀏覽器內(nèi)存占用的一點思考
在論壇里面混了好久了,突然發(fā)現(xiàn)一篇主題都沒發(fā)表過,都只是回帖,于是決定貢獻一點力量。

最近看論壇,發(fā)現(xiàn)很多用戶都在關(guān)注內(nèi)存問題,不少用戶覺得內(nèi)存占用比較大,就這個問題,我想以個人觀點發(fā)表一些看法,當然也希望大家看完我的文字之后,對內(nèi)存這個東西有個新的理解和看法。

先講點基本的科普知識,以windows為例,操作系統(tǒng)里面運行著很多進程,每個進程都需要消耗一定的內(nèi)存用來存放自己的數(shù)據(jù),瀏覽器也不例外。但是內(nèi)存總數(shù)是固定的,那么一旦進程所需要的總內(nèi)存超出機器安裝的物理內(nèi)存怎么辦呢?操作系統(tǒng)很聰明,它會把一些不常用的內(nèi)存放到硬盤上(想了解更多細節(jié)的,可以去搜一下LRU算法),這樣可以把內(nèi)存騰出來給那些處于活動狀態(tài)的程序。當那些當初被臨時放到硬盤的內(nèi)存數(shù)據(jù)需要再次被使用時,操作系統(tǒng)會把它們?nèi)〕鰜恚匦路诺絻?nèi)存中去。這個過程就是我們常說的“換頁(page swap)”操作。換頁操作是有很大的額外開銷的,畢竟硬盤速度比內(nèi)存要慢很多。

那么我們平常在任務(wù)管理器所看到的“內(nèi)存”是什么呢?其實那個數(shù)值的含義是“一個進程真實消耗的內(nèi)存大小 減去 被轉(zhuǎn)移到硬盤上的內(nèi)存大小”,你可以簡單理解為“假的內(nèi)存占用”。也就是說,這個數(shù)字越小并不能說明一個軟件越省內(nèi)存,有可能是這個軟件在“搞鬼”:它把自己的內(nèi)存“強制”放到硬盤上(windows有一個api叫SetProcessWorkingSetSize,可以強制把內(nèi)存放到硬盤上)。這里推薦大家關(guān)注一個叫Private Bytes的指標,這個指標才能真正反映一個進程所消耗的內(nèi)存數(shù)。注意,xp下面的任務(wù)管理器是無法看到這個指標的,大家可以去下載process explorer,就能看到了。

上面說的可能太深奧,下面我們說點簡單的,就說瀏覽器占內(nèi)存這個事情吧。論壇上不少朋友都說瀏覽器占內(nèi)存大,說什么開了5個頁面就占了200M之類的話。那么你也許一直關(guān)注的就是我上面說的那個“假”的內(nèi)存,如果有可能,不妨關(guān)注一下private bytes。比如對比一下傲游或者tw,甚至是ie也可以,開同樣的標簽,做同樣的動作,看看大家的private bytes是否一樣。當然,我舉這個例子,顯然他們的private bytes應(yīng)該是相差無幾(差個幾M不是關(guān)鍵問題)。此時你可以再關(guān)注一下“假”內(nèi)存,如果有某個瀏覽器的這個“假”內(nèi)存數(shù)字很小,說明這個瀏覽器在“有意掩飾”一些東西,當然出于什么目的我們就不知道了。

有些朋友可能會擔心,說瀏覽器會不會把整個操作系統(tǒng)的內(nèi)存全吃滿。我可以放心地告訴你,操作系統(tǒng)的設(shè)計絕對比你想的要聰明得多。假設(shè)你有512M的內(nèi)存,但是你開了很多網(wǎng)頁,這些網(wǎng)頁要消耗1G的內(nèi)存。此時操作系統(tǒng)會自動把多出的那些內(nèi)存轉(zhuǎn)移到硬盤,而且在一般情況下,操作系統(tǒng)會很聰明地選擇那些你長時間沒有閱讀的頁面(因為采用多標簽,所以一般只能看到一個頁面)放入硬盤。這個時候,你通過任務(wù)管理器就會看到,這個瀏覽器也許只占用了300M的內(nèi)存,但是其實它有700M的內(nèi)存被臨時放到了硬盤上。但是如果你用process explorer,就會看到,這個軟件的private byte是1G,不會隨著窗口的顯示和隱藏而發(fā)生改變。

從操作系統(tǒng)的設(shè)計角度來看,數(shù)據(jù)在內(nèi)存和硬盤之間的轉(zhuǎn)移應(yīng)該屬于操作系統(tǒng)的職責,一個進程不應(yīng)當越俎代庖。如果純?yōu)榱巳蝿?wù)管理器好看,純?yōu)榱艘恍o聊的內(nèi)存評測,那么我們完全可以把內(nèi)存全都塞到硬盤上,你甚至可以看到瀏覽器只占1M的內(nèi)存,但是這樣用起來就會特別卡,因為每次需要訪問數(shù)據(jù)時,都要從硬盤中現(xiàn)取,那速度自然可想而知了。有些朋友可能擔心,說我開著瀏覽器的時候還要做別的事情,不能讓瀏覽器把內(nèi)存都吃掉,那么從這個角度考慮,就更應(yīng)該把內(nèi)存的管理權(quán)交給操作系統(tǒng)了,因為只有操作系統(tǒng)才知道你這個時候在做什么,操作系統(tǒng)會根據(jù)你當前的行為來決定內(nèi)存的分配策略。而相反地,搜狗瀏覽器的開發(fā)人員并不知道你會做什么,極端一點說,如果搜狗瀏覽器強制“不許”把內(nèi)存放到硬盤,那么有些用戶就會說“搜狗瀏覽器好流暢啊,真爽”,但是另外一些用戶就會說“搜狗真爛,一開搜狗,其他軟件都巨卡”;相反地,如果搜狗瀏覽器強制把所有內(nèi)存都放到硬盤,那么一些用戶就會說“搜狗真省內(nèi)存,一點也不影響其他軟件運行”,但是另外一些用戶就會說“搜狗太他媽卡了,根本沒法用”。

我個人的觀點是,搜狗以后可以推出多種模式供大家選擇,比如有些用戶喜歡關(guān)注“假”內(nèi)存這個數(shù)字,那么就可以把內(nèi)存全部交換到硬盤,以滿足這些用戶的一些癖好;而對于大多數(shù)普通用戶,目前這樣子應(yīng)該說是最佳的狀態(tài)(即把內(nèi)存的管理權(quán)完全交給操作系統(tǒng)掌管)。

最后請各位噴子注意,我的觀點僅供大家參考,但是如果你想在原理上————注意是“原理”上————噴我,那么我建議你先做一些功課再來噴,比如學學基本的操作系統(tǒng)原理,讀讀linux kernel源碼,改改wrk什么的,以免你的水平比我低太多。

歡迎大家深入交流






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1