2012-05-24 49 views
5

我知道有一個api process.memoryUsage()來獲取當前進程中的內存使用情況。如何獲取node.js中的子進程內存使用情況?

但是,如果我通過child_process.spawn(command,[args],[options])啓動一個新的子進程,並且我得到一個ChildProcess對象,那麼如何才能獲得新的進程內存使用情況?

回答

0

如果您處於unix環境,那麼您可以使用ps(使用/proc/<pid>/stat)。這裏有一個例子:

// 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)); 
}); 

這是測試與Ubuntu 12.04和OS X獅子。雖然不認爲它會在Windows中工作。

1

我們可以通過使用nodejs ipc協議獲得多平臺解決方案。你只需要設置事件來請求父進程的內存使用,然後從產生的子進程發送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()}); 
    } 
}); 
相關問題