鍍金池/ 問答/HTML/ vue多頁面應(yīng)用,頁面切換后,內(nèi)存未釋放

vue多頁面應(yīng)用,頁面切換后,內(nèi)存未釋放

項(xiàng)目框架:

vuejs+iview
每個(gè)頁面都是直接引用vuejs的庫(kù),并且new了一個(gè)新的vue實(shí)例

由于項(xiàng)目原因

無法使用webpack和vue-router做成單頁面應(yīng)用。(暫時(shí)) 瀏覽器環(huán)境都是IE瀏覽器,

問題復(fù)現(xiàn)

我使用了IE11提供的內(nèi)存監(jiān)聽工具(快捷鍵ctrl+shift+u)(或使用任務(wù)管理的內(nèi)存監(jiān)聽), 可以發(fā)現(xiàn)頁面在切換or刷新后,
甚至頁面切換至一個(gè)空的頁面后, 內(nèi)存并沒有得到釋放,

例如

原有內(nèi)存是100Mb,頁面操作后增加至150MB,頁面跳轉(zhuǎn)至一個(gè)空的內(nèi)容頁,內(nèi)存還是150MB,或者降低了一些,但還是大于100MB

想請(qǐng)教

如何在頁面離開or刷新后銷毀所有已經(jīng)創(chuàng)建的vue實(shí)例和javascript 對(duì)象。

請(qǐng)問是否有辦法!
水平不足,虛心請(qǐng)教,

回答
編輯回答
糖果果

瀏覽器不做后退功能了?
這個(gè)瀏覽器的特性讓前端屏蔽幾乎是不可能的
溝通能力也是工作能力的一部分,我覺得這不是一個(gè)技術(shù)問題而是一個(gè)溝通問題

2017年11月18日 00:03
編輯回答
孤星

js內(nèi)存泄漏的定位是比較麻煩的,因?yàn)樯婕暗嚼厥?,很多時(shí)候,已經(jīng)釋放的內(nèi)存還沒有回收,要過一段時(shí)間才能看到占用量的下降,建議用chrome的Allocation timeline來監(jiān)測(cè)比較準(zhǔn)確:

clipboard.png

chrome的好處是可疑內(nèi)存可以定位到準(zhǔn)確的引用,但總的來說還是比較難找的。我一般都是連續(xù)進(jìn)行循環(huán)操作多次(幾十次),來判斷是否真有內(nèi)存泄漏,如果真有的話,可以重點(diǎn)關(guān)注DOM對(duì)象和事件有沒有正確的處理,一般的js對(duì)象都不會(huì)有問題,因?yàn)槔亲詣?dòng)回收的,不再使用的js變量通常都自動(dòng)回收掉了。

2017年11月24日 04:50