首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找Node.JS应用程序中的内存泄漏来源

如何查找Node.JS应用程序中的内存泄漏来源
EN

Stack Overflow用户
提问于 2014-08-08 01:23:54
回答 1查看 191关注 0票数 2

我在Node.js/Express应用程序中有内存泄漏。应用程序在3-5天后死亡,并显示以下日志消息:

代码语言:javascript
复制
FATAL ERROR: JS Allocation failed - process out of memory

我在没有用户连接的情况下设置了一个服务器,但它仍然崩溃,所以我知道泄漏是由以下代码引起的,这些代码在后台运行以将api更改同步到数据库。

代码语言:javascript
复制
poll(config.refreshInterval)

function poll(refreshRate) {
    return apiSync.syncDatabase()
        .then(function(){
            return wait(refreshRate)
        })
        .then(function(){
            return poll(refreshRate)
        })          
}

var wait = function wait(time) {
    return new Promise(function(resolve){
        applog.info('waiting for %s ms..', time)
        setTimeout(function(){
            resolve(true)
        },time)
    })
}

有什么技术可以用来分析堆以找到占用所有内存的源对象?

这需要一段时间才能崩溃,所以我需要一些可以记录日志的东西,我可以稍后再回来分析。

有没有像Java标志-XX:HeapDumpOnOutOfMemoryError这样的选项?

EN

回答 1

Stack Overflow用户

发布于 2014-08-08 01:28:05

查看node-memwatch

它提供了一个heap diff类:

代码语言:javascript
复制
var hd = new memwatch.HeapDiff();
// your code here ...
var diff = hd.end();

它还具有用于泄漏的事件发射器:

代码语言:javascript
复制
memwatch.on('leak', function(info) {
// look at info to find out about what might be leaking
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25188555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档