1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // a trivial process that does nothing except
- // trigger GC and output the present base memory
- // usage every second. this example is intended to
- // demonstrate that memwatch itself does not leak.
- var http = require('http');
- var start = new Date();
- function msFromStart() {
- return new Date() - start;
- }
- var leak = [];
- // every second, this program "leaks" a little bit
- setInterval(function() {
- for (var i = 0; i < 10; i++) {
- var str = i.toString() + " on a stick, short and stout!";
- leak.push(str);
- }
- }, 1000);
- // meantime, the program is busy, doing *lots* of http requests
- var http = require('http');
- http.createServer(function (req, res) {
- res.writeHead(200, {'Content-Type': 'text/plain'});
- res.end('Hello World\n');
- }).listen(1337, '127.0.0.1');
- function doHTTPRequest() {
- var options = {
- host: '127.0.0.1',
- port: 1337,
- path: '/index.html'
- };
- http.get(options, function(res) {
- setTimeout(doHTTPRequest, 300);
- }).on('error', function(e) {
- setTimeout(doHTTPRequest, 300);
- });
- }
- doHTTPRequest();
- doHTTPRequest();
- var memwatch = require('../');
- // report to console postgc heap size
- memwatch.on('stats', function(d) {
- console.log("postgc:", msFromStart(), d.current_base);
- });
- memwatch.on('leak', function(d) {
- console.log("LEAK:", d);
- });
- // also report periodic heap size (every 10s)
- setInterval(function() {
- console.log("naive:", msFromStart(), process.memoryUsage().heapUsed);
- }, 5000);
|