node內(nèi)存泄漏排查與修復(fù)過(guò)程
前言
之前開(kāi)發(fā)了一個(gè)node接口,該接口使用canvas繪制產(chǎn)品圖提供給java端使用,在運(yùn)行了一段時(shí)間后發(fā)現(xiàn)了內(nèi)存泄漏問(wèn)題
本文淺記下修復(fù)過(guò)程(ps:主要是記錄下啟動(dòng)命令和訪問(wèn)地址)
正文
內(nèi)存泄漏指的是未被js引擎自動(dòng)回收的內(nèi)存,它多出現(xiàn)在定時(shí)器、dom事件和閉包
而筆者恰好就犯了定時(shí)器的問(wèn)題,如下圖框紅的位置即是修復(fù)過(guò)后的代碼
但這似乎并不是主因,內(nèi)存仍然在隨著時(shí)間的推移而不斷增加
故,需要借助工具來(lái)排查....
首先想到的肯定是node自身提供的inspect選項(xiàng)了
node --inspect --heapsnapshot-signal=SIGUSR2 ./xxx.js
重新啟動(dòng)后,在chrome瀏覽器訪問(wèn)chrome://inspect/#devices,正常會(huì)出現(xiàn)如下頁(yè)面
點(diǎn)擊框紅的位置,進(jìn)入調(diào)試控制臺(tái)切換到內(nèi)存選項(xiàng)卡并生成初始快照,方便對(duì)比分析
然后訪問(wèn)接口,嘗試復(fù)現(xiàn)問(wèn)題
在新的快照中對(duì)比,發(fā)現(xiàn)canvas生成的圖片uri會(huì)隨著調(diào)用次數(shù)增加,這正是內(nèi)存不斷增加的罪魁禍?zhǔn)?/p>
最后,在代碼中找到生成該data uri的地方
它被掛載到了上下文,根據(jù)該ctx的傳入路徑,它來(lái)自變量helpers對(duì)象的toWebAttrs方法,該對(duì)象被筆者定義到了頁(yè)面頂部,即接口回調(diào)的外部,也就是說(shuō)沿著閉包路徑被留存了
因此,只需要在用完后delete掉即可
到此這篇關(guān)于node內(nèi)存泄漏排查與修復(fù)過(guò)程的文章就介紹到這了,更多相關(guān)node內(nèi)存泄漏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Node.js的強(qiáng)大爬蟲(chóng) 能直接發(fā)布抓取的文章哦
基于Node.js的強(qiáng)大爬蟲(chóng)能直接發(fā)布抓取的文章哦!本爬蟲(chóng)源碼基于WTFPL協(xié)議,感興趣的小伙伴們可以參考一下2016-01-01關(guān)于Node.js中頻繁修改代碼重啟服務(wù)器的問(wèn)題
這篇文章主要介紹了關(guān)于Node.js中頻繁修改代碼重啟服務(wù)器的問(wèn)題,本文給大家分享解決辦法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10詳解如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Node.js腳手架
本篇文章主要介紹了如何實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Node.js腳手架,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12Node.js中child_process實(shí)現(xiàn)多進(jìn)程
這篇文章主要介紹了Node.js中child_process實(shí)現(xiàn)多進(jìn)程,需要的朋友可以參考下2015-02-02Nodejs學(xué)習(xí)item【入門(mén)手上】
這篇文章主要介紹了Nodejs學(xué)習(xí)item【入門(mén)手上】,需要的朋友可以參考下2016-05-05Pycharm配置Node.js運(yùn)行js代碼詳細(xì)過(guò)程
在PyCharm中寫(xiě)JavaScript代碼并進(jìn)行調(diào)試是非常方便的,但是有些用戶(hù)可能對(duì)如何在PyCharm中準(zhǔn)確地運(yùn)行JavaScript代碼感到困惑,這篇文章主要給大家介紹了關(guān)于Pycharm配置Node.js運(yùn)行js代碼的相關(guān)資料,需要的朋友可以參考下2023-11-11手寫(xiě)Node靜態(tài)資源服務(wù)器的實(shí)現(xiàn)方法
這篇文章主要介紹了手寫(xiě)Node靜態(tài)資源服務(wù)器的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03