鍍金池/ 問(wèn)答/HTML/ router切換后,組件銷毀卻并未真正刪除DOM,快速切換頁(yè)面時(shí),使得內(nèi)存消耗過(guò)

router切換后,組件銷毀卻并未真正刪除DOM,快速切換頁(yè)面時(shí),使得內(nèi)存消耗過(guò)大,該怎么解決?

使用的nw開(kāi)發(fā)的項(xiàng)目,所以原生支持node,剛開(kāi)始還以為是Nw導(dǎo)致的崩潰,后來(lái)才發(fā)現(xiàn)是vue(或者說(shuō)vue-router)的原因。。

使用router切換頁(yè)面前,初始占用內(nèi)存是正常值(150M左右),正常速度切換路由的話,基本上因頁(yè)面切換導(dǎo)致的內(nèi)存增加會(huì)很快降回來(lái),在±5M左右。
但如果切換的非??斓脑?,每次路由切換增加的3-10M,將不會(huì)降回原來(lái)的值且會(huì)不斷增加,直到停止操作的時(shí)候,內(nèi)存也不會(huì)很快降回正常值。

經(jīng)過(guò)對(duì)自己項(xiàng)目的一系列測(cè)試后發(fā)現(xiàn),如果因?yàn)榭焖俨僮鞫鴮?dǎo)致的內(nèi)存漲至<=350M左右,一段時(shí)間不操作后,內(nèi)存基本上都會(huì)降回初始的150M,但如果>350M的話,內(nèi)存將只加不減,每次操作都會(huì)增加一定的內(nèi)存占用,直到程序崩潰閃退。。

第一原因肯定是懷疑自己寫(xiě)的代碼導(dǎo)致了內(nèi)存泄漏,就另外快速生成(webpack+vue-cli)了一個(gè)demo,build后運(yùn)行,最后的結(jié)果和上述差不多,大概如下:
草圖

demo下載

回答
編輯回答
瘋子范

請(qǐng)問(wèn),現(xiàn)在我這邊也遇到了這個(gè)問(wèn)題;你這邊最后怎么處理的?

2017年1月2日 19:17
編輯回答
孤影

這樣寫(xiě)試試

<keep-alive>
      <router-view></router-view>
</keep-alive>
2017年4月23日 00:13