Skip to content

Instantly share code, notes, and snippets.

@shibukawa
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shibukawa/9807554 to your computer and use it in GitHub Desktop.
Save shibukawa/9807554 to your computer and use it in GitHub Desktop.
node.js memory leak

How to detect node.js Memory Leak

  1. Install node-webkit-agent

    $ npm install node-webkit-agent
  2. Modify script

    Add following lines in the script:

    var agent = require('webkit-devtools-agent');
  3. Run server.
  4. Send signal to server

    $ kill -USR2 35490   # for OSX, other POSIX systems use SIGUSR2
  5. Open This page by Chrome.
  6. Take heap snapshot
  7. Run load test script
  8. Take heap snapshot again.
  9. Compare these snapshots.
// leaked!
var logger = require('logger');
var someService = require('someService');
SomeClass = BaseClass.extends({
initialize: function () {
// This initialize function (closure) is leaked.
someService.on('error', function (msg) {
logger.error(msg);
});
}
}):
// fix!
var logger = require('logger');
var someService = require('someService');
function reportError(msg) {
logger.error(message);
}
SomeClass = BaseClass.extends({
initialize: function () {
someService.on('error', reportError);
}
}):
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment