1. 程式人生 > >Google Chrome動了我的乳酪?

Google Chrome動了我的乳酪?

一、前言

    隨著Google Chrome瀏覽器的釋出,突然湧現了很多跟Chrome相關的文章,特別是《Chrome的居心叵測》和《對“Chrome居心叵測”一文之深入分析》令我感觸頗深。我是凡人,所以也來湊下熱鬧 ^_^ 。本文主要記述Chrome在安裝、執行、解除安裝過程中的一些行為和結果,而儘量不對其進行主觀評價。

二、工具

    在動手試驗之前,先介紹下需要使用的三種工具,分別是:FilMon、RegMon和Ultra Network Sniffer。詳細的用法請大家自己去搜索,我這裡只是簡要的介紹下。

(1)檔案監視工具——FilMon

    FilMon是File Monitor的縮寫,意即檔案監視器,它可以監視系統中的所有檔案操作,包括開啟、讀、寫、關閉等。通過過濾設定,我們可以只觀測Chrome的檔案操作行為。我在測試時的設定如下:(a)包含:“*” ;(b)排除:“Explorer.EXE;Regmon.exe;svchost.exe;wmiprvse.exe;360tray.exe;Rtvscan.exe;lsass.exe;csrss.exe;realsched.exe;dexplore.exe;winlogon.exe;logon.scr

”。以上設定跟系統相關,但是目標是隻測試Chrome的行為。也許您會問,為什麼不直接設定包含為“chrome”而設定了那麼多排除項呢?哈哈,因為在安裝Chrome的過程中,我發現同時有幾個安裝相關的程序,比如“chrome_installer.exe”和“setup.exe”等。我這裡的原則是:去除干擾項,剩下的就是本文的討論物件。

(2)登錄檔監視工具——RegMon

    RegMon可以對登錄檔的所有操作進行監測,同樣的,我設定了:(a)包含:“*”;(b)排除:“Explorer.EXE;svchost.exe;Filemon.exe;csrss.exe;notepad.exe;wmiprvse.exe;Rtvscan.exe;spoolsv.exe;VPTray.exe;winlogon.exe;360tray.exe;Regmon.exe;System;lsass.exe;realsched.exe;dexplore.exe;LUALL.EXE;logon.scr”。設定的原則同FilMon,這裡不再重述。

(3)網路截包監視工具——Ultra Network Sniffer

    Ultra Network Sniffer可以擷取通過本機的所有網路包,並生成報告,通過設定指定網絡卡、指定程序和網路協議,可以得到我們想要的結果。我這裡只有一塊物理網絡卡Realtek 8139,沒說的,當然選它了;程序選擇我們的觀測物件chrome.exe;而網路協議則不做篩選,以反映chrome的所有網路行為。

三、實驗及資料

    看完上述工具介紹之後,勤勞而聰明的您也許已經自動動手實驗了。而我分安裝、執行、解除安裝三個部分對chrome進行分析,其中執行部分分別用chrome瀏覽了幾個有代表性的網站,如:技術

http://www.cnblogs.com/、遊戲http://www.blizzard.com/、視訊http://www.tudou.com/、音樂mp3.baidu.com、新聞news.sina.com.cn。這些網站在開啟之後,都運行了10分鐘左右,然後將其關閉。

(1)安裝

    當您執行安裝程式“chrome_installer.exe”之後,chrome便已經完全安裝到當前使用者的“Application Data”目錄中,在後面的彈出視窗中無論選擇確定或者取消都不影響這一點。在我的電腦中,生成的目錄“C:/Documents and Settings/Administrator/Local Settings/Application Data/Google/Chrome”裡,有兩個子目錄“Application”和“User Data”。

    (a)其中“Application”目錄存放的chrome可執行程式及一些動態連結庫,佔用空間44.8M,不過這裡面有一個名為“Installer”的子目錄在執行期並不需要,浪費了我們22.3M的空間。

    (b)“User Data”目錄裡有兩個比較重要的東西,檔案“Safe Browsing”和目錄“Cache”,最初佔用空間6.58M;“Safe Browsing”從字面上看是安全瀏覽的意思,如果您打開了chrome瀏覽器,並且網路是連通的,那麼“Safe Browsing”會持續增長,從我上午安裝好chrome到現在下午3點半,該檔案已經達到了38.5M,或許是因為google的不安全網站資料庫比較大,它還在源源不斷的下載不良網站資料到我的電腦中;“Cache”是快取目錄,會隨著您瀏覽不同的網頁數目而變大。

    (c)在安裝的過程中,會在臨時目錄“C:/Documents and Settings/Administrator/Local Settings/Temp”中建立若干臨時檔案,以及一個子目錄“chrome_219”,其中子目錄“chrome_219”會在安裝之後會被刪除,而其它臨時檔案則遺留在臨時目錄中。

    (d)在安裝過程中,記錄有77785次IO操作(包括create,open,read,write,close,delete,query等),FilMon生成的日誌文字檔案有12.3M,不能直接用excel 2000完全載入分析,等我想到更好的分析方法再到這裡補充分析結果。目前的思路是嘗試使用更高版本的excel,或者用程式設計的方式將日誌轉換成SQL資料表,然後再進行分析。

    (e)在安裝過程中的登錄檔操作15772次,沒有增加自動執行的啟動程式和服務。

    (f)總結以上幾點:安裝目錄不可選;剛裝完佔用51.4M硬碟空間;在使用的過程中會增肥;沒有增加啟動程式和服務。

(2)執行

    Chrome瀏覽器在執行過程中都做了什麼呢?為此我測試了它在瀏覽不同網頁時的表現,每種測試都執行開啟瀏覽器,輸入並瀏覽一個網頁,關閉瀏覽器的過程,每次耗時10分鐘左右;測試的網頁包括:技術類的部落格園http://www.cnblogs.com/、遊戲類的暴雪http://www.blizzard.com/、視訊類的土豆http://www.tudou.com/、音樂類的百度mp3.baidu.com、以及新聞類的新浪新聞news.sina.com.cn。

    (a)測試得到的檔案io和登錄檔操作資料如下表:

測試網頁

檔案IO次數

登錄檔操作次數

測試時間

測試時長

部落格園

140678

3003

9:18:58

9:28:38

9:40

暴雪

217082

2696

9:30:42

9:41:10

10:28

土豆

164356

2980

9:43:50

9:51:52

8:02

百度MP3

428937

2796

9:58:00

10:15:51

17:51

新浪新聞

351122

3217

10:20:04

10:31:20

11:16

合計

1302175

14692

57:17

    在使用chrome瀏覽網頁的過程中,平均檔案IO:378.87次/秒

    Chrome瀏覽器在剛執行時,會載入系統目錄下的多個動態連結庫,然後會訪問安裝目錄中的“Cache”目錄多次,絕大部分的IO操作都集中在“Safe Browsing”和“Safe Browsing-journal”兩個檔案;沒有發現chrome訪問硬碟中的其它目錄和檔案。

    (b)Chrome的網路通訊狀況

     在Chrome以HTTP方式獲取到我們所檢視的網頁之後,它會頻繁的訪問64.233.189.102(埠:80,協議:HTTP,域名:safebrowsing.clients.google.com)和74.125.11.94(埠:80,協議:HTTP,域名:static.cache.l.google.com)。從域名的字面含義來看,safebrowsing.clients.google.com是安全瀏覽伺服器,static.cache.l.google.com是快取伺服器。我從2008年9月12日10:55:34.200一直讓chrome開始測試到2008年9月14日10:50:45.121,一共擷取到10176個數據包。Ultra Network Sniffer儲存的日誌檔案不能方便的直接用資料庫軟體進行匯入分析,這裡我暫時偷懶先抽取了第50~99條記錄進行分析,以後如果有時間我想辦法把所有的記錄都統計出來。這50條記錄的統計結果如下表: 

遠端伺服器

流入本機資料包數目

流出本機資料包數目

小計

127.0.0.1

4

4

8

74.125.11.94

40

2

42

64.233.189.102

0

0

0

合計

44

6

50

注:127.0.0.1是本機,這部分資料沒有含義;流出到74.125.11.94的2個數據包都是HTTP GET請求,從74.125.11.94

流入的40個數據包都是HTTP頭和HTTP Binary Data。

從上表我們可以看出:(1)從本機流出的資料包很少,說明chrome幾乎不將本機的資料傳出;(2)流入的資料包都是二進位制檔案,不知道具體是什麼內容。

    (c)Internet Explorer的檔案IO狀況

     在測試的過程中,我還順便測試了一下IE6在瀏覽http://www.cnblogs.com/這個頁面的檔案IO狀況,用時10分22秒,共9351次檔案IO操作,大多操作集中在“C:/Documents and Settings/Administrator/Local Settings/History/History.IE5/”、“C:/Documents and Settings/Administrator/Cookies/”、“C:/Documents and Settings/Administrator/Local Settings/Temporary Internet Files/Content.IE5/”和“C:/Program Files/Thunder Network/Thunder/Profiles/”等目錄的檔案,其中Thunder Network是訊雷的預設安裝目錄。

    對比IE和chrome,chrome的檔案IO操作是IE的10倍以上。

(3)解除安裝

     解除安裝chrome比較簡單,點選開始選單的“解除安裝谷歌瀏覽器”即可快速的刪除掉chrome,不需要重新啟動電腦。解除安裝完之後會彈出一個要求填寫解除安裝原因的網頁,不過填與不填結果都一樣,chrome已經解除安裝完成了。解除安裝之後會在chrome的安裝目錄內遺留“User Data”這個子目錄,裡面保留有使用者的設定或者是它一廂情願的預設設定 和 Safe Browsing檔案以及快取檔案,該目錄的大小跟你使用chrome的頻繁程度及時間有關,我有次解除安裝之後佔我10.6M空間,剛才解除安裝之後佔我71.8M空間。

四、結論

    非常感謝您能看完本文,我遵守儘量不做評論的約定不下結論。不過我相信您心中已經有了自己的看法,如果您願意跟別人分享您的看法,請在後面留下您的評論。

    (注:實驗資料有380M,這裡不允許我發這麼大的檔案,我就不傳送上來了。如果您對資料有疑問,大可自己用文中介紹的方法自己動手重現。)

    最後,祝大家中秋快樂。

相關推薦

Google Chrome乳酪

一、前言     隨著Google Chrome瀏覽器的釋出,突然湧現了很多跟Chrome相關的文章,特別是《Chrome的居心叵測》和《對“Chrome居心叵測”一文之深入分析》令我感觸頗深。我是凡人,所以也來湊下熱鬧 ^_^ 。本文主要記述Chrome在安裝、執行、解除安

乳酪,誰的程式碼,誰又的“bug"

  "你的是我的,我的還是我的”經常在熱戀中的情侶中這樣說,但現實生活中還是要好好掌握自己的主動權。 自己的東西,始終是自己的,不允許任何人在不知情的情況下,進行隨意的支配,就算在親密的人,在不知情的情況下,觸犯到了彼此的隱私,心情也會不美麗的,久而久之,還會積累很多的矛盾。    

乳酪?--java例項初始化的順序問題

故事背景 有一天,老鼠小白髮現了一個奇怪的問題,它的乳酪的生產日期被誰搞丟了,不知道乳酪是否過期,可怎麼吃呀?   讓我們來看看吧 import java.util.Date;public class Cheese { public static final Cheese chees

HashMap踩坑實錄——誰乳酪

說到HashMap,hashCode 和 equals ,想必絕大多數人都不會陌生,然而你真的瞭解這它們的機制麼?本文將通過一個簡單的Demo還原我自己前不久在 HashMap 上導致的線上問題,看看我是如何跳進這個坑裡去的。 起因 在重構一段舊程式碼的時候發現有個 HashMap 的key物件沒有重寫 ha

《誰的網絡資產》:4星。移動互聯時代的軟件使用技巧。

分享 常見 播放 4.4 權重 短信 排名 引擎 一道 本書作者自稱極客,我基本認可。全書講的是一些軟件使用的說明和技巧,許多技巧對IT從業人員來說也是比較新鮮的。 全書內容大致有以下三類:1:反欺詐知識與技巧;2:一些場景下的軟件推薦;3:軟件使用技巧。 總體評價

的特征?——sklearn特征轉換行為全記錄

blog selection clas 意義 print encoder 分享 steps 轉換函數 目錄 1 為什麽要記錄特征轉換行為?2 有哪些特征轉換的方式?3 特征轉換的組合4 sklearn源碼分析  4.1 一對一映射  4.2 一對多映射  4.3 多對多映

MySQL實戰 | 03 - 誰的資料:淺析MySQL的事務隔離級別

原文連結:這一次,帶你搞清楚MySQL的事務隔離級別! 使用過關係型資料庫的,應該都事務的概念有所瞭解,知道事務有 ACID 四個基本屬性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和永續性(Durability),今天我們主要來理解一下事務的隔離性。

的Girl的窩

本文程式碼使用的語言為C#,請使用別的語言的同學自行轉換為自己習慣的語言 談到單例模式,首先要明確為什麼要使用單例模式? 目的:保證一個類僅有一個例項物件,並且該物件全域性共享 方法:構造私有化,屬性或方法公開化 1、最簡單的單例模式:餓漢式    由於在類被載入

不同人對BUG的反應,程式設計師:誰的程式碼?

Bug 是個很有趣的東西,有程式碼的地方就有它,不同人對待 Bug也有不同的反應,一起來看吧~ 程式設計師:誰動了我的程式碼? 這確實是一種似曾相識的感覺,我經過無數次的解釋都沒有人相信,但我還是要說一句:它原本不是這個樣子的。 不過,程式猿通常有著執著的精神,在夜深人靜

深入理解PHP記憶體管理之誰的記憶體

首先讓我們看一個問題: 如下程式碼的輸出, var_dump(memory_get_usage()); $a = "laruence"; var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage()); 輸出

的 Token

這裡涉及到的系統是一個 7 年的遺留系統(技術棧是 .NET MVC2),即將被客戶淘汰。這篇博文的主題無關技術本身,文中談到的技術細節也不是什麼高大上的,更多的是想記錄因這件事情觸發的非技術思考。 早上7點45分來到公司,我坐在辦公桌旁邊開始考慮今天的工作事項。想到客戶一直抱怨的電子表單系統在產品環境上8

Android,誰的記憶體(1)

一、 Android的記憶體機制     Android的程式由Java語言編寫,所以Android的記憶體管理與Java的記憶體管理相似。程式設計師通過new為物件分配記憶體,所有物件在java堆內分配空間;然而物件的釋放是由垃圾回收器來完成的。C/C++中的記憶體機制

偶現的MissingServletRequestParameterException,誰的引數?

概述 排查過程 結論 概述 最近遇到一個偶現的問題,在向服務端請求的時候,偶爾會出現異常,在請求中的query String 傳遞了引數,卻出現了異常MissingServletRequestParameterException 如下所示

學不...

最近過得真的是挺充實,都快習慣加班的節奏了,好在還能有個雙休。 記得去年剛出來實習找工作那會,迫不及待的想找家公司入職,巴不得是家公司要就去了。 工作後就轉型做 java 後端了,現在想想,還是挺明智的,現在這行情,後端確實比較好找工作。 從開始的連增刪改查都不會,到現在能獨立負責一些模組,想想這個過程

京東互保下線,阿里相互保無奈更名,巨頭進軍保險誰的乳酪

在上月中旬,支付寶聯合信美相互險共同推出了新型保險產品“相互保”,憑藉著“一人生病,大家出錢,一人出事,萬人共濟”這樣新穎的參保模式,相互保也迅速成為了火爆一時的網紅保險,不僅加入人次迅速突破1000萬人,也引發了網際網路巨頭的爭相效仿,京東更在隨後不久就推出了與“相互保”規則類似的“京東互保”。

Google 的 Angular 迫使放棄 Web 開發

一直以來,Facebook 的 React、Google 的 Angular 和尤雨溪的 Vue

為什麼再也不想和 Google HR 交談

【伯樂線上導讀】: 關於程式設計師面試時現場寫程式碼,估計大家還記得 2015 年 6 月的一個新聞,知名包管理工具 Homebrew 的作者 Max Howell 去 Google 面試。因為他沒能寫出反轉二叉樹演算法,最後被 Google 拒絕了。後來 9 月份

JDK 12又來學不...

開發十年,就只剩下這套架構體系了! >>>   

RabbitMQ入門,心的

人一輩子最值得炫耀的不應該是你的財富有多少(雖然這話說得有點違心,呵呵),而是你的學習能力。技術更新迭代的速度非常快,那作為程式設計師,我們就應該擁有一顆擁抱變化的心,積極地跟進。 在 RabbitMQ 入門之前,我已經入門了 Redis、Elasticsearch 和 MongoDB,這讓我感覺自己富有極