首頁  >  問答  >  主體

javascript - node記憶體溢出問題

雷雷
我想大声告诉你我想大声告诉你2713 天前779

全部回覆(2)我來回復

  • 阿神

    阿神2017-05-16 13:31:53

    執行檔的時候,使用

    node --inspect --expose-gc XXX.js

    這裡面兩個兩個 flag --inspact 是告訴它透過chrome devtool 進行調試,--expose-gc 是說你可以透過global.gc()方法主動收集記憶體。

    執行之後就會有一個chrome://协议的链接,粘贴进chrome,就会出现最常见的chrome dev tool,在profile 里面,点击第二栏 Take Heap Snapshot,然后点击Take Snapshot,记录一次当前heap内存使用情况,此时就会出现当前的内存使用情况的快照,然后等一下,让node程序运行一段时间,再记录一次,然后点击左上角的Summary切换成Comparison模式,透過與第一次的對比,找到究竟是什麼增加了,就能找到具體的問題。

    其次,可以在可疑的程式碼段前後通過 node 全局变量 processmemoryUsage 方法,打印出 heap
    究竟的使用量,通过对比代码前后使用量的差别,判断是否有 heap 的洩漏。

    透過題主的報錯訊息,像是 express session 記錄時的問題,在寫 session 的地方多打斷點,透過 process.memoryUsage()方法看看究竟是哪裡出了問題,這個需要耐心和運氣。

    回覆
    0
  • 为情所困

    为情所困2017-05-16 13:31:53

    express-session 直接使用記憶體本身就有洩漏的問題 文件上已經說明了 配合mongo或redis使用

    回覆
    0
  • 取消回覆