如何获得node.js中的subprocess内存使用情况?

我知道有一个api process.memoryUsage()来获取当前进程的内存使用情况。

但是,如果我通过child_process.spawn(command,[args],[options])启动一个新的subprocess,并且我得到一个ChildProcess对象,那么如何获得新的进程内存使用?

我们可以使用nodejs ipc协议获得多平台解决scheme。 您只需要设置事件来请求父进程的内存使用情况,然后从产生的subprocess发送process.memoryUsage()

parent.js

 var ChildProcess = require('child_process'), child = ChildProcess.fork('./child.js'); child.on('message', function(payload){ console.log(payload.memUsage); }); child.send('get_mem_usage'); 

child.js它可能看起来像这样

 process.on('message', function(msg){ if(msg === 'get_mem_usage'){ process.send({memUsage: process.memoryUsage()}); } }); 

那么你可以使用ps (使用/proc/<pid>/stat底层),如果你在unix环境。 这是一个例子:

 // Spawn a node process var child_process = require('child_process'); var child = child_process.spawn('node'); // Now get its pid. child_process.exec('ps -p' + child.pid + ' -o vsize=', function (err, stdout, stderr) { err = err || stderr; if (err) { return console.log('BAD Luck buddy: ', err); } console.log('YOU\'ve done it', parseInt(stdout, 10)); }); 

这是testing与Ubuntu 12.04和OS X狮子。 虽然不认为它会在Windows中工作。