v8-profiler-next provides node bindings for the v8 profiler.
- Compatibility
- node version: v4.x ~ v12.x
- platform: mac, linux, windows
'use strict';
const v8Profiler = require('v8-profiler-next');
const title = '';
// ex. 5 mins cpu profile
v8Profiler.startProfiling(title, true);
setTimeout(() => {
const profiler = v8Profiler.stopProfiling(title);
profiler.delete();
console.log(profiler);
}, 5 * 60 * 1000);
'use strict';
const v8Profiler = require('v8-profiler-next');
const snapshot = v8Profiler.takeSnapshot();
// 1. not as stream
snapshot.export(function (error, result) {
if (error){
console.error(error);
return;
}
console.log(result);
snapshot.delete();
});
// 2. as stream
const transform = snapshot.export();
transform.pipe(process.stdout);
transform.on('finish', snapshot.delete.bind(snapshot));
Attention: If node version <= v8.x, please use sampling heap profiling alone without cpu profiling or taking snapshot.
'use strict';
const v8Profiler = require('v8-profiler-next');
// set a leak array
const arraytest = [];
setInterval(() => {
arraytest.push(new Array(1e2).fill('*').join());
}, 20);
// start 1min sampling profile
v8Profiler.startSamplingHeapProfiling();
setTimeout(() => {
// stop and get allocation profile
const profile = v8Profiler.stopSamplingHeapProfiling();
// upload shf.heapprofile into chrome dev tools -> Memory -> ALLOCATION PRODILES
require('fs').writeFileSync('./shf.heapprofile', JSON.stringify(profile));
console.log(profile);
}, 60 * 1000);
Copyright (c) 2018 team of v8-profiler, hyj1991