{"_id":"@airbnb/node-memwatch","_rev":"25-330baca826740a804125553dada06721","name":"@airbnb/node-memwatch","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@airbnb/node-memwatch","version":"1.0.0","author":{"url":"http://lloyd.io","name":"Lloyd Hilaiel"},"_id":"@airbnb/node-memwatch@1.0.0","maintainers":[{"name":"airbnb","email":"jordan.harband+npm@airbnb.com"}],"contributors":[{"url":"@jedp","name":"Jed Parsons"},{"url":"@jhaynie","name":"Jeff Haynie"},{"url":"@jmatthewsr-ms","name":"Justin Matthews"}],"homepage":"https://github.com/airbnb/node-memwatch#readme","bugs":{"url":"https://github.com/airbnb/node-memwatch/issues"},"dist":{"shasum":"20b60bc3d5ed672dad70213acfec3ef0c5469aad","tarball":"https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-1.0.0.tgz","fileCount":18,"integrity":"sha512-ex6I1NjiEsoDdXEaQvNCDbNV/fRBf76EWpLTQlh9Rzb174n7P0mbU2fgjploPOb1GYtt6tN57JleRc1X3cGOuw==","signatures":[{"sig":"MEYCIQCl1+NCCojfZLLwU7Uy4ij3kad2jL0Ls3JcBzsR7f8rVAIhAN+5wD6Cjw9GyeJn2KF95XoIgYA/1f0NuTha+BLonW8b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31318},"main":"include.js","engines":{"node":">= 7.0"},"gitHead":"2f06b74f352d2c2e74bb093d9a44b737469c0857","gypfile":true,"scripts":{"test":"mocha tests --reporter spec","install":"node-gyp rebuild"},"_npmUser":{"name":"airbnb","email":"jordan.harband+npm@airbnb.com"},"licenses":[{"type":"wtfpl"}],"repository":{"url":"git+https://github.com/airbnb/node-memwatch.git","type":"git"},"_npmVersion":"5.6.0","description":"Keep an eye on your memory usage, and discover and isolate leaks.","directories":{},"_nodeVersion":"9.8.0","dependencies":{"nan":"^2.9.2","bindings":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^2.4.5","should":"^8.3.1"},"_npmOperationalInternal":{"tmp":"tmp/node-memwatch_1.0.0_1521579131495_0.48103934554769756","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@airbnb/node-memwatch","version":"1.0.1","author":{"url":"http://lloyd.io","name":"Lloyd Hilaiel"},"_id":"@airbnb/node-memwatch@1.0.1","maintainers":[{"name":"airbnb","email":"jordan.harband+npm@airbnb.com"},{"name":"goatslacker","email":"josh@goatslacker.com"},{"name":"ljharb","email":"ljharb@gmail.com"},{"name":"schleyfox","email":"ben@pixelmachine.org"}],"contributors":[{"url":"@jedp","name":"Jed Parsons"},{"url":"@jhaynie","name":"Jeff Haynie"},{"url":"@jmatthewsr-ms","name":"Justin Matthews"}],"homepage":"https://github.com/airbnb/node-memwatch#readme","bugs":{"url":"https://github.com/airbnb/node-memwatch/issues"},"dist":{"shasum":"74f7218fc8b2b3bdcfad17534fe6e05b3171d9aa","tarball":"https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-1.0.1.tgz","fileCount":18,"integrity":"sha512-9UJhqnvkQKln2Q/2GTVxnj9D03eBo7gqaS3o8QxE3aMrPK8i1OnoVYKhjQr5gG67H3Tp6b3w2fZvU6n9iRCoqw==","signatures":[{"sig":"MEYCIQCPQDIqfqwaZmzjwCM4VRVuwOCQNa5tTe5yLX1xKCiqoAIhAIeCkW73LZ2nubzC6josTTVlghBa3HLVYbAtTCLxEtt7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+cwGCRA9TVsSAnZWagAAgK0P/iI9WSvldd0OHQBXJf4v\nT0ZuVjDmmxbwI3ToicNBxbt0huypIHGpFi9M10+85bbM8XlGiZZZRaYh/bvY\nfe0R0Les1ijuTQJ/YGOxxPiu7/tM4Bl1n/NrpA5tUwbcQ+Ve9hsS5vte2jrZ\nNznFYm134uhtoNNHTimIfSYRhVlWhiSoHdVKlQeWLNv+rzXI/M8Ye/khB4bS\n1na6kCXSTF5eNRzVUbrK1S6DfJx+5ANOERBql+XDbTKSMPXlEldeqTU2SfkM\nH5TKsCacRbwYtrj1MZTYFgJggjuBT0v5fORLPOkJWwYvOWr7DRKmXtrqBTaz\nuIUBZ23EJ7NZxOZlD9niKUPiMdZSn5zmK9xwaGDsYkz13gfLDc+hyGybcGgg\nzxenPKc98f3ye2OLTRe90ZooVqvDRxO/BO3qf9vfHC8aSWSVIMq1Zs421lFm\nYOYEQxeD3rU8anZVh0spbMGE4JWAYFnoNUU25P0VWjgEZNyuLizWg82BMQ/2\n7+86svS0sbzsOHyBWGkQRM03FNhvVZd0fi1TwUWMo0nJKtJl8qTHgFQhn1Fn\nhMwitfco7ti1orPARoWbd/cQzszFBdnHM0MIVAyt//8eTpU+fB5Eogv4+bqL\n118g7axY4+F2aWoA0AEdi9gQ3mbZ0fzzoTUhYku5GlrRtchHJIFDaTjA3jiV\nOQJc\r\n=qiLk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"include.js","engines":{"node":">= 8.0"},"gitHead":"6e0840abb1d38b9b427e9053ee56e381ca20d221","gypfile":true,"scripts":{"test":"mocha tests --reporter spec","install":"node-gyp rebuild"},"_npmUser":{"name":"schleyfox","email":"ben@pixelmachine.org"},"licenses":[{"type":"wtfpl"}],"repository":{"url":"git+https://github.com/airbnb/node-memwatch.git","type":"git"},"_npmVersion":"5.6.0","description":"Keep an eye on your memory usage, and discover and isolate leaks.","directories":{},"_nodeVersion":"8.9.4","dependencies":{"nan":"^2.9.2","bindings":"^1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^2.4.5","should":"^8.3.1"},"_npmOperationalInternal":{"tmp":"tmp/node-memwatch_1.0.1_1526320132944_0.40073070309731573","host":"s3://npm-registry-packages"}},"1.0.2-alpha.0":{"name":"@airbnb/node-memwatch","version":"1.0.2-alpha.0","author":{"url":"http://lloyd.io","name":"Lloyd Hilaiel"},"_id":"@airbnb/node-memwatch@1.0.2-alpha.0","maintainers":[{"name":"airbnb","email":"jordan.harband+npm@airbnb.com"},{"name":"goatslacker","email":"josh@goatslacker.com"},{"name":"ljharb","email":"ljharb@gmail.com"},{"name":"schleyfox","email":"ben@pixelmachine.org"}],"contributors":[{"url":"@jedp","name":"Jed Parsons"},{"url":"@jhaynie","name":"Jeff Haynie"},{"url":"@jmatthewsr-ms","name":"Justin Matthews"}],"homepage":"https://github.com/airbnb/node-memwatch#readme","bugs":{"url":"https://github.com/airbnb/node-memwatch/issues"},"dist":{"shasum":"86dc1e4e8acd1e8b111ebd72424e7a38b7d09bbf","tarball":"https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-1.0.2-alpha.0.tgz","fileCount":18,"integrity":"sha512-CYYkn4qkf/LnEZLFrJW0TGZZ3KtPxlYBtTEIOMTcSYKQFrdMu/Ch4Httu070ANETrKsWg8lZdoqcB/gYzf9j/g==","signatures":[{"sig":"MEQCIEe835erxQQgvnYa/830v+xtvg8acfBQlPeuNZtAbu4zAiBtZUO+gKT36UYgGCqfxeH4fI0xbHzAIlDryA8M5SrUvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBB+GCRA9TVsSAnZWagAAHY4P/A41iICJEoDxHI7IfxFS\nNo/9jKA0ymj6XgnTqwnxIMFGMk5i1bmh0dwA6TGm/G8duVpsRxpvL3CMSF1H\nmJPHQjR0qF6WcNTDm194dPaVocY4imE4TSQcSJGV+T0Lgm8eXKSTq9TJSivp\n8bTC3HCwQETMH1nvJ/FJ/P58BB0Km+ms7IYTbvblAYAElnOLYUR5veNVQ9Vl\nBftwtSX95shJTDKox1KuVqSMESknUFTvDJf5KP51HdPgIdAY6xz2OSieUWda\n/U6+3ot0en1qKAtL0KbZAfd+Ae5GxOUuvTLUba7Aqo0nmInCo+HZ3b1cBCV3\n+hPV4eBA/QsPE4wodKzHQPBEL+C2pPsVok+0q0fDgqTIBzdEjOkdKlHUCdka\nywmVk7RvBAZZ1FNs5Z5c/au9yoIsZ7WQ9uQthWLD9PvstaTOV+h0sO+lbfMQ\nT4y0OxIPwzH+/HZSnfigQ09qY6GgHIadws0HhkHtWkKr8OfXOIcGiXSiT8Kr\nqR61YhBTaSzS6AZs+vbFZsercXWjgNGc5czOzo6KK5bEQhxDBR2bwx4gCgSg\nH0PlKy4LikoM06l+JvUvd5/jTrJTFagCfc23jpSeYO6jqKEX3dYodOLdDGFy\nEQZnGAWdOv/ih0mJvma0UJCiUL0zZWxmvQEeLR625diyohl34k/0+0gabpq+\niZ1H\r\n=/YW3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"include.js","engines":{"node":">= 8.0"},"gitHead":"ecd51e4bc9ba8cac10cd1002243072371e365488","gypfile":true,"scripts":{"test":"mocha tests --reporter spec","install":"node-gyp rebuild"},"_npmUser":{"name":"schleyfox","email":"ben@pixelmachine.org"},"licenses":[{"type":"wtfpl"}],"repository":{"url":"git+https://github.com/airbnb/node-memwatch.git","type":"git"},"_npmVersion":"5.6.0","description":"Keep an eye on your memory usage, and discover and isolate leaks.","directories":{},"_nodeVersion":"8.9.4","dependencies":{"nan":"^2.9.2","bindings":"^1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^2.4.5","should":"^8.3.1"},"_npmOperationalInternal":{"tmp":"tmp/node-memwatch_1.0.2-alpha.0_1526996869010_0.9640941030096106","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@airbnb/node-memwatch","version":"1.0.2","author":{"url":"http://lloyd.io","name":"Lloyd Hilaiel"},"_id":"@airbnb/node-memwatch@1.0.2","maintainers":[{"name":"airbnb","email":"jordan.harband+npm@airbnb.com"},{"name":"goatslacker","email":"josh@goatslacker.com"},{"name":"ljharb","email":"ljharb@gmail.com"},{"name":"schleyfox","email":"ben@pixelmachine.org"}],"contributors":[{"url":"@jedp","name":"Jed Parsons"},{"url":"@jhaynie","name":"Jeff Haynie"},{"url":"@jmatthewsr-ms","name":"Justin Matthews"}],"homepage":"https://github.com/airbnb/node-memwatch#readme","bugs":{"url":"https://github.com/airbnb/node-memwatch/issues"},"dist":{"shasum":"a82e311ae27e05df4fb2cf8e4fbc75caaf7190a4","tarball":"https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-1.0.2.tgz","fileCount":18,"integrity":"sha512-2R+MEEMSTUdKwQ6NFWkyA/UNoSjL1tMldZqJbZpgXSwNMBzlNlkUWEXKu9RqTTMkDqJRfGJ2VDs8gPlPK2APDQ==","signatures":[{"sig":"MEQCIGw+dExsBf0XDAE1Lfc6Ctte8RIlAKtUlFx+y7TIQQeyAiAPbSTRWaOit4gL5nD9uhemQivad//i50ct0hg79d8sNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBHEKCRA9TVsSAnZWagAANDkQAI9TiU+fM7403Lq2710e\n6X0G6ohpQqgdj0Xcf7S2xOoTn5dALrrLIXZSV5Q/5WYhlBTzAnG06dIfwLkl\nzkjtYEd3+jhcP0m2JohE6nCLM6b6EWVsv7M5RoZ2pR2kJtcBfpGTz+XnKSRo\nTz3ms15MKupbIo9A1jizpt96dLBX2XkC6nZZJPJt7mcixLOqITdiDSGAEouh\nuochgjrIWU3IBiciNX5hr+VKxdnmZLquEb2JUeQ8JVvfSxzFuxalHs/UKUcz\nmPWVK7DSZm7qg30bljHmhVd1xeGmiRjMzewohYyT9TCZQzSnjkDGYbYaqthm\nE2rsCqDd8hCMlfwAHSYp1NlDJMOGAKAbHTdJ7gXDMj+sFwYjXCpUzSRmGIAw\nifgYNWSCI3qTel3EYwjaS37/PdHgbqZl2wLl1tDVSzyUohJdw8jmqWIuFR84\njJBoHJag+XC4RSZ7MgWwBraRkoN5pK4/okMIbva/y0yBQ5AccoYr2/8VgpW2\nC3ojvDPizZOr8rcms6ZLfJCGqB9rVMJat76YrX5Syq3g6ECfXd7YzdZZxrrY\nDZqUaNEtNZbjrC2rhBcTPG8tv3HAtqqIIt4tv35qv5S8wHxI/pYUW7Bl6HpG\nI9nC7yeRG1jtRdjQFH141dAHWd5NrCJ53jDrz/Yhol3EuqTdBQYAzD97W/ME\nDYNo\r\n=Rpq7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"include.js","engines":{"node":">= 8.0"},"gitHead":"1733e1a05e122ae2d154b27f1b3ef70c749a5758","gypfile":true,"scripts":{"test":"mocha tests --reporter spec","install":"node-gyp rebuild"},"_npmUser":{"name":"schleyfox","email":"ben@pixelmachine.org"},"licenses":[{"type":"wtfpl"}],"repository":{"url":"git+https://github.com/airbnb/node-memwatch.git","type":"git"},"_npmVersion":"5.6.0","description":"Keep an eye on your memory usage, and discover and isolate leaks.","directories":{},"_nodeVersion":"8.9.4","dependencies":{"nan":"^2.9.2","bindings":"^1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^2.4.5","should":"^8.3.1"},"_npmOperationalInternal":{"tmp":"tmp/node-memwatch_1.0.2_1527017738052_0.5824146349817616","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@airbnb/node-memwatch","version":"2.0.0","author":{"url":"http://lloyd.io","name":"Lloyd Hilaiel"},"_id":"@airbnb/node-memwatch@2.0.0","maintainers":[{"name":"airbnbeng","email":"opensource@airbnb.com"},{"name":"etienne_tripier","email":"etienne.tripier@airbnb.com"},{"name":"goatslacker","email":"josh@goatslacker.com"},{"name":"lencioni","email":"joe.lencioni@gmail.com"},{"name":"ljharb","email":"ljharb@gmail.com"},{"name":"milesj","email":"mileswjohnson@gmail.com"},{"name":"noratarano","email":"noratarano@gmail.com"},{"name":"schleyfox","email":"ben@pixelmachine.org"}],"contributors":[{"url":"@jedp","name":"Jed Parsons"},{"url":"@jhaynie","name":"Jeff Haynie"},{"url":"@jmatthewsr-ms","name":"Justin Matthews"}],"homepage":"https://github.com/airbnb/node-memwatch#readme","bugs":{"url":"https://github.com/airbnb/node-memwatch/issues"},"dist":{"shasum":"473756b9e078fca923bda536debaf519e867fae1","tarball":"https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-2.0.0.tgz","fileCount":18,"integrity":"sha512-4DMP5GQz9ZYklB/FXiE1+yNffzjdiSerpr10QGxBQF56xcZsKLE0PnL/Pq6yC1sLGT0IHgG4UXgz/a5Yd463gw==","signatures":[{"sig":"MEUCIBwJ1tb8lUxz997cbbzuXd1Znj3ZcRW9MjaqZMaq0BGfAiEA9bxgMWdE8rI/d4A8CinPVJNHOyoefdmGywMjPTH7bHI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":32234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeoJFkCRA9TVsSAnZWagAA2dMP/RvWvIYrQKPpFcZ/VwF1\nfFN0O663bKpvLWrP4IJkO3DJB97hBvO74Rl0wRJmQLRKRJKH5P+gS3rUlzWy\nM3PMJyIwdRoeEaRbIxIMm0yJaKT2On6Djx1eMOtPKKvywuDLhPgZ1WyB1PY2\n0nEEmkYsVoyuhyMXkrFkxwpk9b086Rnx+zD9LSpLem83WSM8plEyNgguWYC3\nUcMx9pjzGlymrrv2ErecePUO24dAAZOEiXF8UH4YJ5s2PZUVFBoHx7WrEK08\nCuyV9IDDU4DqJxALTYJLtFqSjQizH0CzB4huxw849dafPE2ez/DkE0mq7HJ5\nwOV4Xfg2bembWxnqOlFoQI/cMuGjBWP7XT8jlimYKsJRsV++Me8Ucqme7mjw\nJRikqvMhhJSnlFKMxATmsaojogEXBEObUJzEIT5khQBoR2r7/gkjRKxUmcn5\nbwnYHIShmjvv5+uY7RlwHyIcJOrVvy1fTz4NWa7P7YSkWezlwUsywGrcw+93\nqp9HTAld5dsRl71iUZ23zlzQlpZc0LhwgtBZULhO/zp8M2l9WQ5zYrinLruE\ndx6AutLbimqvWKaR8pAv0aPxivuukl5cx4QGRht2UA/l4Bz0/1SIV7WPo653\n65AZNpUfVHY034CxaLsorRYCWsye/2F6ln0OeL3XqK+TvIpV5vqWk+YBGfeq\nCljG\r\n=BAtq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"include.js","engines":{"node":">= 10.0"},"gitHead":"216c90d5e77855d4b7bb9c39e69f1fb0303d6f1d","gypfile":true,"scripts":{"test":"mocha tests --reporter spec","install":"node-gyp rebuild"},"_npmUser":{"name":"milesj","email":"mileswjohnson@gmail.com"},"licenses":[{"type":"wtfpl"}],"repository":{"url":"git+https://github.com/airbnb/node-memwatch.git","type":"git"},"_npmVersion":"6.14.4","description":"Keep an eye on your memory usage, and discover and isolate leaks.","directories":{},"_nodeVersion":"12.16.0","dependencies":{"nan":"^2.14.1","bindings":"^1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^2.4.5","should":"^8.3.1"},"_npmOperationalInternal":{"tmp":"tmp/node-memwatch_2.0.0_1587581284149_0.6915519576070803","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@airbnb/node-memwatch","version":"3.0.0","author":{"url":"http://lloyd.io","name":"Lloyd Hilaiel"},"_id":"@airbnb/node-memwatch@3.0.0","maintainers":[{"name":"christianv","email":"vueringschristian@gmail.com"},{"name":"sharmilajesupaul","email":"tosharmila@gmail.com"},{"name":"danbeam","email":"dsbeam@gmail.com"},{"name":"brieb","email":"brie.codes@gmail.com"},{"name":"airbnbeng","email":"opensource@airbnb.com"},{"name":"goatslacker","email":"josh@goatslacker.com"},{"name":"ljharb","email":"ljharb@gmail.com"},{"name":"schleyfox","email":"ben@pixelmachine.org"}],"contributors":[{"url":"@jedp","name":"Jed Parsons"},{"url":"@jhaynie","name":"Jeff Haynie"},{"url":"@jmatthewsr-ms","name":"Justin Matthews"}],"homepage":"https://github.com/airbnb/node-memwatch#readme","bugs":{"url":"https://github.com/airbnb/node-memwatch/issues"},"dist":{"shasum":"a144ea15e83d9f9f3c2c70d8a98208dad675f61f","tarball":"https://registry.npmjs.org/@airbnb/node-memwatch/-/node-memwatch-3.0.0.tgz","fileCount":19,"integrity":"sha512-6/GRgvOsw4t97WEthOwvd3JfIg40+g0/TMB9tdPrCuziy4IR9yiDETAdAib3e2GMJFkeSsnVLkl/z3GSf1JPEg==","signatures":[{"sig":"MEUCIEzCN2ey0TRk0tNVcOjGur5SXyUEFaSw32eHZDcYmaFaAiEA67TVnFWpLXCI8pIusAwlgRxI8SDh1pYweFCmkDueHeI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":34022},"main":"include.js","engines":{"node":">= 18"},"gitHead":"f3e5a68017f72da09c6122ce70993d1a8abcd2c3","gypfile":true,"scripts":{"test":"vitest","install":"node-gyp rebuild"},"_npmUser":{"name":"christianv","email":"vueringschristian@gmail.com"},"licenses":[{"type":"wtfpl"}],"repository":{"url":"git+https://github.com/airbnb/node-memwatch.git","type":"git"},"_npmVersion":"9.5.1","description":"Keep an eye on your memory usage, and discover and isolate leaks.","directories":{},"_nodeVersion":"18.16.1","dependencies":{"nan":"^2.22.0","bindings":"^1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.4"},"_npmOperationalInternal":{"tmp":"tmp/node-memwatch_3.0.0_1731026100304_0.9355679574477804","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-03-20T20:52:11.441Z","modified":"2026-05-14T19:38:40.047Z","1.0.0":"2018-03-20T20:52:11.544Z","1.0.1":"2018-05-14T17:48:53.647Z","1.0.2-alpha.0":"2018-05-22T13:47:49.151Z","1.0.2":"2018-05-22T19:35:38.155Z","2.0.0":"2020-04-22T18:48:04.263Z","3.0.0":"2024-11-08T00:35:00.496Z"},"bugs":{"url":"https://github.com/airbnb/node-memwatch/issues"},"author":{"url":"http://lloyd.io","name":"Lloyd Hilaiel"},"homepage":"https://github.com/airbnb/node-memwatch#readme","repository":{"url":"git+https://github.com/airbnb/node-memwatch.git","type":"git"},"description":"Keep an eye on your memory usage, and discover and isolate leaks.","contributors":[{"url":"@jedp","name":"Jed Parsons"},{"url":"@jhaynie","name":"Jeff Haynie"},{"url":"@jmatthewsr-ms","name":"Justin Matthews"}],"maintainers":[{"email":"opensource@airbnb.com","name":"airbnbeng"},{"email":"brie.codes@gmail.com","name":"brieb"},{"email":"tosharmila@gmail.com","name":"sharmilajesupaul"},{"email":"vueringschristian@gmail.com","name":"christianv"},{"email":"josh@goatslacker.com","name":"goatslacker"},{"email":"ljharb@gmail.com","name":"ljharb"},{"email":"ben@pixelmachine.org","name":"schleyfox"}],"readme":"`node-memwatch`: Leak Detection and Heap Diffing for Node.JS\n============================================================\n\n`node-memwatch` is here to help you detect and find memory leaks in\nNode.JS code.  It provides:\n\n- A `stats` event, emitted on full MarkSweepCompact GCs giving you\n  data describing your heap usage and trends over time.\n\n- A `HeapDiff` class that lets you compare the state of your heap between\n  two points in time, telling you what has been allocated, and what\n  has been released.\n\n\nInstallation\n------------\n\n- `npm install @airbnb/node-memwatch`\n\n\nDescription\n-----------\n\nThere are a growing number of tools for debugging and profiling memory\nusage in Node.JS applications, but there is still a need for a\nplatform-independent native module that requires no special\ninstrumentation.  This module attempts to satisfy that need.\n\nTo get started, import `node-memwatch` like so:\n\n```javascript\nvar memwatch = require('@airbnb/node-memwatch');\n```\n\n### Leak Detection\n\nCurrently unsupported while we explore heuristics\n\n### Heap Usage\n\nThe best way to evaluate your memory footprint is to look at heap\nusage right after V8 performs garbage collection.  `memwatch` does\nexactly this - it checks heap usage only after GC to give you a stable\nbaseline of your actual memory usage.\n\nWhen V8 performs a garbage collection (technically, we're talking\nabout a full GC with heap compaction), `memwatch` will emit a `stats`\nevent.\n\n```javascript\nmemwatch.on('stats', function(stats) { ... });\n```\n\nThe `stats` data will look something like this:\n\n```javascript\n{\n  gcScavengeCount: 1,\n  gcScavengeTime: 1100880, // ns\n  gcMarkSweepCompactCount: 2,\n  gcMarkSweepCompactTime: 21157231, // ns\n  gcIncrementalMarkingCount: 0,\n  gcIncrementalMarkingTime: 0, //ns\n  gcProcessWeakCallbacksCount: 0,\n  gcProcessWeakCallbacksTime: 0, // ns\n  total_heap_size: 16097280, // bytes\n  total_heap_size_executable: 3670016, // bytes\n  total_physical_size: 10741880, // bytes\n  total_available_size: 1487689928, // bytes\n  used_heap_size: 5691584, // bytes\n  heap_size_limit: 1501560832, // bytes\n  malloced_memory: 8192,\n  peak_malloced_memory: 1185464,\n  gc_time: 4587251 // ns\n}\n```\n\nV8 has its own idea of when it's best to perform a GC, and under a\nheavy load, it may defer this action for some time.  To aid in\nspeedier debugging, `memwatch` provides a `gc()` method to force V8 to\ndo a full GC and heap compaction.\n\n\n### Heap Diffing\n\nFor leak isolation, it provides a `HeapDiff` class that takes two snapshots and\ncomputes a diff between them.  For example:\n\n```javascript\n// Take first snapshot\nvar hd = new memwatch.HeapDiff();\n\n// do some things ...\n\n// Take the second snapshot and compute the diff\nvar diff = hd.end();\n```\n\nThe contents of `diff` will look something like:\n\n```javascript\n{\n  \"before\": { \"nodes\": 11625, \"size_bytes\": 1869904, \"size\": \"1.78 mb\" },\n  \"after\":  { \"nodes\": 21435, \"size_bytes\": 2119136, \"size\": \"2.02 mb\" },\n  \"change\": { \"size_bytes\": 249232, \"size\": \"243.39 kb\", \"freed_nodes\": 197,\n    \"allocated_nodes\": 10007,\n    \"details\": [\n      { \"what\": \"String\",\n        \"size_bytes\": -2120,  \"size\": \"-2.07 kb\",  \"+\": 3,    \"-\": 62\n      },\n      { \"what\": \"Array\",\n        \"size_bytes\": 66687,  \"size\": \"65.13 kb\",  \"+\": 4,    \"-\": 78\n      },\n      { \"what\": \"LeakingClass\",\n        \"size_bytes\": 239952, \"size\": \"234.33 kb\", \"+\": 9998, \"-\": 0\n      }\n    ]\n  }\n}\n```\n\nThe diff shows that during the sample period, the total number of\nallocated `String` and `Array` classes decreased, but `Leaking Class`\ngrew by 9998 allocations.  Hmmm.\n\nYou can use `HeapDiff` in your `on('stats')` callback; even though it\ntakes a memory snapshot, which triggers a V8 GC, it will not trigger\nthe `stats` event itself.  Because that would be silly.\n\n\nFuture Work\n-----------\n\nPlease see the Issues to share suggestions and contribute!\n\n\nLicense\n-------\n\nhttp://wtfpl.net\n","readmeFilename":"README.md"}