小編這次要給大家分享的是詳解JS常見內(nèi)存泄漏及解決方案,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、成都微信小程序、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十余年以來,已經(jīng)為千余家成都木屋各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的千余家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。內(nèi)存泄漏?
官方解釋:內(nèi)存泄漏(Memory Leak)是指程序中己動(dòng)態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果。
通俗點(diǎn)就是指由于疏忽或者錯(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存,不再用到的內(nèi)存卻沒有及時(shí)釋放,從而造成內(nèi)存上的浪費(fèi)。
避免內(nèi)存泄漏?
在局部作用域中,等函數(shù)執(zhí)行完畢,變量就沒有存在的必要了,垃圾回收機(jī)制很虧地做出判斷并且回收,但是對于全局變量,很難判斷什么時(shí)候不用這些變量,無法正?;厥?;所以,盡量少使用全局變量。在使用閉包的時(shí)候,就會造成嚴(yán)重的內(nèi)存泄漏,因?yàn)殚]包中的局部變量,會一直保存在內(nèi)存中。
內(nèi)存溢出?
當(dāng)程序運(yùn)行需要的內(nèi)存超過了剩余的內(nèi)存時(shí), 就出拋出內(nèi)存溢出的錯(cuò)誤。
例如下面的代碼,謹(jǐn)慎試用,可能會卡窗口。。。。
var obj = {} for (var i = 0; i < 100000; i++) { obj[i] = new Array(10000000) } console.log('------')