欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node內(nèi)存泄漏排查與修復(fù)過程

 更新時間:2024年06月19日 08:54:53   作者:Sir_蘇  
之前開發(fā)了一個node接口,該接口使用canvas繪制產(chǎn)品圖提供給java端使用,在運(yùn)行了一段時間后發(fā)現(xiàn)了內(nèi)存泄漏問題,本文淺記下修復(fù)過程,文章通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

前言

之前開發(fā)了一個node接口,該接口使用canvas繪制產(chǎn)品圖提供給java端使用,在運(yùn)行了一段時間后發(fā)現(xiàn)了內(nèi)存泄漏問題

本文淺記下修復(fù)過程(ps:主要是記錄下啟動命令和訪問地址)

正文

內(nèi)存泄漏指的是未被js引擎自動回收的內(nèi)存,它多出現(xiàn)在定時器、dom事件和閉包

而筆者恰好就犯了定時器的問題,如下圖框紅的位置即是修復(fù)過后的代碼

但這似乎并不是主因,內(nèi)存仍然在隨著時間的推移而不斷增加

故,需要借助工具來排查....

首先想到的肯定是node自身提供的inspect選項(xiàng)了

node --inspect --heapsnapshot-signal=SIGUSR2 ./xxx.js

重新啟動后,在chrome瀏覽器訪問chrome://inspect/#devices,正常會出現(xiàn)如下頁面

點(diǎn)擊框紅的位置,進(jìn)入調(diào)試控制臺切換到內(nèi)存選項(xiàng)卡并生成初始快照,方便對比分析

然后訪問接口,嘗試復(fù)現(xiàn)問題

在新的快照中對比,發(fā)現(xiàn)canvas生成的圖片uri會隨著調(diào)用次數(shù)增加,這正是內(nèi)存不斷增加的罪魁禍?zhǔn)?/p>

最后,在代碼中找到生成該data uri的地方

它被掛載到了上下文,根據(jù)該ctx的傳入路徑,它來自變量helpers對象的toWebAttrs方法,該對象被筆者定義到了頁面頂部,即接口回調(diào)的外部,也就是說沿著閉包路徑被留存了

因此,只需要在用完后delete掉即可

到此這篇關(guān)于node內(nèi)存泄漏排查與修復(fù)過程的文章就介紹到這了,更多相關(guān)node內(nèi)存泄漏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論