淺談垃圾回收(GC)與前端性能優(yōu)化

一、垃圾回收

垃圾回收是從java借鑒過(guò)來(lái)的齿椅,有人也會(huì)說(shuō):GC琉挖。能提高性能。
我們以常用的變量聲明來(lái)說(shuō)var a=12;來(lái)在內(nèi)存中找個(gè)地址存起來(lái)涣脚,如果總是申請(qǐng)內(nèi)存忘記釋放:性能低示辈,內(nèi)存泄漏、長(zhǎng)期內(nèi)存泄漏就會(huì)內(nèi)存溢出遣蚀。
底層語(yǔ)言(C語(yǔ)言):需要手動(dòng)釋放內(nèi)存矾麻。
高級(jí)語(yǔ)言(JS語(yǔ)言):高級(jí)語(yǔ)言,var b=1;申請(qǐng)內(nèi)存芭梯,是別人已經(jīng)定義好的险耀,所以不需要手動(dòng)釋放內(nèi)存。
js:有自己的垃圾回收機(jī)制粥帚,在宿主環(huán)境環(huán)境下也就是瀏覽器幫咱們釋放內(nèi)存了。
查看“垃圾”:
以谷歌瀏覽器為例:Chrome --- F12 --- TimeLine --- '小山'限次,垃圾回收
生存周期(評(píng)判標(biāo)準(zhǔn)) --- 作用域
作用域:
1.全局變量:在哪都能用芒涡,生存周期很長(zhǎng),瀏覽器關(guān)閉時(shí)釋放卖漫,占資源
2.局部變量:生存周期短费尽,不占資源
3.閉包:子函數(shù)可以使用父函數(shù)的局部變量,如果子函數(shù)得不到釋放羊始,整體作用域鏈上的局部變量都會(huì)保存旱幼。
如下圖所示:

下面讓我一起來(lái)看幾個(gè)關(guān)于作用域的幾個(gè)小例子:
作用域鏈:先找自己,自己的父級(jí)突委,父級(jí)的父級(jí)...直到全局,全局還沒(méi)有的話就會(huì)報(bào)錯(cuò)柏卤。
var a=1;//定義了一個(gè)全局變量a
document.onclick=fuction(){
    alert(a);
};
--------------------------
//定義一個(gè)局部變量
function  show(){
    var a='str';
    alert(a);
}   
//沒(méi)調(diào)用show函數(shù)之前沒(méi)有a
//show();調(diào)用了,就有a
//調(diào)用完成 沒(méi)有a
--------------------------
///一個(gè)簡(jiǎn)單的閉包
function show(){
    var a=1;
    document.onclick=function(){
        alert(a);
    };
};  
document.onclick=null;  //也是釋放內(nèi)存的一種方式
--------------------------------
function show(){
    var a=1;
    var b=2;
    document.onclick=function(){
        alert(b);
    };
};  
//這里的變量b沒(méi)有得到釋放匀油,所以就會(huì)一直被占用著缘缚。
-----------------------------------
function show(){
    var a=1;
    function show1(){
        var b=2;
        document.onclick=function(){
            alert(a);
        };
    };
};

二、性能優(yōu)化—js方向

進(jìn)行性能優(yōu)化的前提:項(xiàng)目穩(wěn)定(功能完成)敌蚜,可維護(hù)性桥滨,再去考慮性能。
性能的分類:

1、網(wǎng)絡(luò)性能
2齐媒、執(zhí)行性能

網(wǎng)絡(luò)性能進(jìn)行分析下:

我們還以谷歌瀏覽器為例:Chrome --- f12 --- network蒲每,


分析:
            name   名稱
            status 狀態(tài)碼
            type 資源類型
            initator  發(fā)起人
            time  請(qǐng)求所耗時(shí)間
            size 資源大小
            timeline 時(shí)間線
                queueing:隊(duì)列
                stalled 卡
                    瀏覽器響應(yīng),卡在瀏覽器
                request sent:發(fā)送
                    客戶端網(wǎng)絡(luò)帶寬喻括,發(fā)送數(shù)據(jù)量
                waiting:等待
                    處理數(shù)據(jù)邀杏,后臺(tái)代碼,服務(wù)器配置
                Content download
                    服務(wù)網(wǎng)絡(luò)寬帶双妨,返回?cái)?shù)據(jù)的量
執(zhí)行性能進(jìn)行分析下:

火狐瀏覽器工具:FF-firebug --- ysolw(給網(wǎng)站評(píng)分)


谷歌瀏覽器工具:chrome --- audits :根據(jù)提示內(nèi)容進(jìn)行修改

總結(jié):

    1.http請(qǐng)求越少越好
        請(qǐng)求盡量合并
        js 合并  |  css 合并  |  圖片 ->css sprite
    2.http請(qǐng)求越小越好
        壓縮:
            index.css 和 new.css
                main.css ->main.min.css
            如何壓縮:
                1.手動(dòng)-淘汰
                2.工具
                    http://tool.oschina.net/
                3.前端自動(dòng)化工具
                    grunt  |  nodejs
                    http://gruntjs.com/
    3淮阐、圖片延遲加載和預(yù)加載
    4、CDN Content Delivery Network 內(nèi)容分發(fā)網(wǎng)絡(luò)
            跟前端沒(méi)關(guān)系刁品,財(cái)務(wù)決定
    5.阻塞加載(同步加載)
        非阻塞加載(異步加載)
            前端頁(yè)面:
                非阻塞加載;
                    css  |  html  |  圖片
                阻塞加載:
                    js
        建議:
            1.別人網(wǎng)站的js泣特,放在body后面
            2.自己的js寫在前面
    6.執(zhí)行性能:
        性能優(yōu)化:習(xí)慣
        1.不用的東西刪除
        2.盡量不用全局變量,好資源挑随、沖突
        3.能用系統(tǒng)的就不要自己寫了
        4.盡量使用正則去操作字符串
    DOM操作是昂貴的状您,最耗性能,盡量減少操作
        DOM操作:
            oDiv.style.left=oDiv.offsetLeft+10+'px';
        DOM:運(yùn)動(dòng)()
            如果用戶看不到當(dāng)前的動(dòng)畫兜挨,清楚定時(shí)器膏孟。
    變量:
        全局:耗性能
        局部:幾乎不耗
            局部變量>全局變量
        屬性:window.a=12;
        全局變量<屬性<局部變量
    *屬性越多,性能越低
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拌汇,一起剝皮案震驚了整個(gè)濱河市柒桑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌噪舀,老刑警劉巖魁淳,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異与倡,居然都是意外死亡界逛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門纺座,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)息拜,“玉大人,你說(shuō)我怎么就攤上這事净响∩倨郏” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵馋贤,是天一觀的道長(zhǎng)狈茉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)掸掸,這世上最難降的妖魔是什么氯庆? 我笑而不...
    開(kāi)封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任蹭秋,我火速辦了婚禮,結(jié)果婚禮上堤撵,老公的妹妹穿的比我還像新娘仁讨。我一直安慰自己,他們只是感情好实昨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布洞豁。 她就那樣靜靜地躺著,像睡著了一般荒给。 火紅的嫁衣襯著肌膚如雪丈挟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天志电,我揣著相機(jī)與錄音曙咽,去河邊找鬼。 笑死挑辆,一個(gè)胖子當(dāng)著我的面吹牛例朱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鱼蝉,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼洒嗤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了魁亦?” 一聲冷哼從身側(cè)響起渔隶,我...
    開(kāi)封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洁奈,沒(méi)想到半個(gè)月后间唉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睬魂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年终吼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了镀赌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氯哮。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖商佛,靈堂內(nèi)的尸體忽然破棺而出喉钢,到底是詐尸還是另有隱情,我是刑警寧澤良姆,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布肠虽,位于F島的核電站,受9級(jí)特大地震影響玛追,放射性物質(zhì)發(fā)生泄漏税课。R本人自食惡果不足惜闲延,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望韩玩。 院中可真熱鬧垒玲,春花似錦、人聲如沸找颓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)击狮。三九已至佛析,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彪蓬,已是汗流浹背寸莫。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寞焙,地道東北人储狭。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捣郊,于是被迫代替她去往敵國(guó)和親辽狈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.什么是垃圾回收呛牲? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡(jiǎn)欲明心閱讀 89,564評(píng)論 17 311
  • 從三月份找實(shí)習(xí)到現(xiàn)在刮萌,面了一些公司,掛了不少娘扩,但最終還是拿到小米着茸、百度、阿里琐旁、京東涮阔、新浪、CVTE灰殴、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,277評(píng)論 11 349
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法敬特,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法牺陶,繼承相關(guān)的語(yǔ)法伟阔,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,664評(píng)論 18 399
  • 1. 垃圾回收的意義在C++中掰伸,對(duì)象所占的內(nèi)存在程序結(jié)束運(yùn)行之前一直被占用皱炉,在明確釋放之前不能分配給其它對(duì)象;而在...
    愛(ài)情小傻蛋閱讀 935評(píng)論 0 11
  • 曾經(jīng)有好幾年的讀書歲月里狮鸭,我用的是這樣一句個(gè)簽:“做一個(gè)明媚的女子合搅,不傾國(guó)多搀,不傾城,以優(yōu)雅姿勢(shì)摸爬滾打”灾部。據(jù)說(shuō)這...
    黃太后閱讀 251評(píng)論 0 0