Node.js-获取已执行应用的已用内存(即使已被杀死)

时间:2019-05-02 05:52:18

标签: javascript node.js memory

即使ChildProcess被杀死之后(在exec回调中),我怎么能使用它呢?

我尝试使用pidusage模块,但仅在进程打开时有效。

我实际上尝试过的:

var proc = exec(execComm,(error, stdout, stderr) => {
    if (error) {
        callback({status: -1, reason:stderr });
    }

    var pidusage = require("pidusage");

    pidusage(proc.pid,function(err,stat){
        console.log(err,stat);
    });

    callback({ status:0, file: out });
});

但是为什么pidusage发送[Error: No maching pid found]
是因为此模块无法获取已经关闭的模块的信息吗?
以及如何在exec回调中获取该信息?

2 个答案:

答案 0 :(得分:0)

您可以将辅助程序绑定到应用程序的退出信号,然后读出内存使用情况,但是由于gc可能会在不可预测的时间运行,因此我不确定您会使用哪种用途。

const ExitHandler = () => { /* your code */ };
process.on( 'exit', ExitHandler.bind( null, { withoutSpace: false } ) );              // on closing
process.on( 'SIGINT', ExitHandler.bind( null, { withoutSpace: true } ) );             // on [ctrl] + [c]
process.on( 'uncaughtException', ExitHandler.bind( null, { withoutSpace: false } ) ); // on uncaught exceptions

答案 1 :(得分:0)

我相信您可以使用node-heapdump之类的东西在您的子进程中创建堆转储,您可以在事后检查。

这样,您还可以有多个转储,以便您可以检查一段时间内的内存使用情况。