1 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
執(zhí)行文件的時(shí)候,使用
node --inspect --expose-gc XXX.js
這里面兩個(gè)兩個(gè) flag --inspact 是告訴它通過(guò)chrome devtool 進(jìn)行調(diào)試,--expose-gc 是說(shuō)你可以通過(guò)global.gc()
方法主動(dòng)收集內(nèi)存。
執(zhí)行之后就會(huì)有一個(gè)chrome://
協(xié)議的鏈接,粘貼進(jìn)chrome,就會(huì)出現(xiàn)最常見(jiàn)的chrome dev tool,在profile 里面,點(diǎn)擊第二欄 Take Heap Snapshot,然后點(diǎn)擊Take Snapshot,記錄一次當(dāng)前heap
內(nèi)存使用情況,此時(shí)就會(huì)出現(xiàn)當(dāng)前的內(nèi)存使用情況的快照,然后等一下,讓node程序運(yùn)行一段時(shí)間,再記錄一次,然后點(diǎn)擊左上角的Summary
切換成Comparison
模式,通過(guò)與第一次的對(duì)比,找到究竟是什么增加了,就能找到具體的問(wèn)題。
其次,可以在可疑的代碼段前后通過(guò) node
全局變量 process
的 memoryUsage
方法,打印出 heap
究竟的使用量,通過(guò)對(duì)比代碼前后使用量的差別,判斷是否有 heap
的泄漏。
通過(guò)題主的報(bào)錯(cuò)信息,像是 express session 記錄時(shí)的問(wèn)題,在寫(xiě) session 的地方多打斷點(diǎn),通過(guò) process.memoryUsage()
方法看看究竟是哪里出了問(wèn)題,這個(gè)需要耐心和運(yùn)氣。
添加回答
舉報(bào)