-
-
Notifications
You must be signed in to change notification settings - Fork 35.7k
Expand file tree
/
Copy pathheap_profile.js
More file actions
49 lines (42 loc) · 1.33 KB
/
heap_profile.js
File metadata and controls
49 lines (42 loc) · 1.33 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
44
45
46
47
48
49
'use strict';
const {
validateBoolean,
validateInteger,
validateInt32,
validateObject,
} = require('internal/validators');
const {
kSamplingNoFlags,
kSamplingForceGC,
kSamplingIncludeObjectsCollectedByMajorGC,
kSamplingIncludeObjectsCollectedByMinorGC,
} = internalBinding('v8');
function normalizeHeapProfileOptions(options = {}) {
validateObject(options, 'options');
const {
sampleInterval = 512 * 1024,
stackDepth = 16,
forceGC = false,
includeObjectsCollectedByMajorGC = false,
includeObjectsCollectedByMinorGC = false,
} = options;
validateInteger(sampleInterval, 'options.sampleInterval', 1);
validateInt32(stackDepth, 'options.stackDepth', 0);
validateBoolean(forceGC, 'options.forceGC');
validateBoolean(includeObjectsCollectedByMajorGC,
'options.includeObjectsCollectedByMajorGC');
validateBoolean(includeObjectsCollectedByMinorGC,
'options.includeObjectsCollectedByMinorGC');
let flags = kSamplingNoFlags;
if (forceGC) flags |= kSamplingForceGC;
if (includeObjectsCollectedByMajorGC) {
flags |= kSamplingIncludeObjectsCollectedByMajorGC;
}
if (includeObjectsCollectedByMinorGC) {
flags |= kSamplingIncludeObjectsCollectedByMinorGC;
}
return { sampleInterval, stackDepth, flags };
}
module.exports = {
normalizeHeapProfileOptions,
};