-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
43 lines (39 loc) · 1.15 KB
/
index.js
File metadata and controls
43 lines (39 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
module.exports = function(initSettings){
var memwatch = require('memwatch-next');
var heapdump;
var settings = initSettings || {};
var logger = settings.logger || console.log;
var errorLogger = settings.errorLogger || settings.logger || console.error;
var heapDumpEnabled = settings.dump;
var dumpPathOrFunction = settings.dumpPathOrFunction;
var reportStats = settings.reportStats;
if(heapDumpEnabled){
heapdump = require('heapdump');
}
if(reportStats){
memwatch.on('stats', function(stats) {
logger({GC_STATS:stats});
});
}
memwatch.on('leak', function(info){
errorLogger("MEMORY_LEAK:",info);
if(heapDumpEnabled){
var dumpPath;
if (typeof(dumpPathOrFunction) == 'function') {
dumpPath = dumpPathOrFunction();
} else if (typeof(dumpPathOrFunction) == 'string'){
dumpPath = dumpPathOrFunction;
}
if(dumpPath){
heapdump.writeSnapshot(function(err, file){
if(err){
errorLogger({MEMORY_REPORT:err});
}
logger({MEMORY_REPORT_DUMP_FILE:file});
});
} else {
heapdump.writeSnapshot();
}
}
})
}