解析v8-profiler和heapdump等工具输出的cpu & heap-memory日志,可以提供
- v8引擎逆优化或者优化失败的函数标红展示以及优化失败原因展示
- 函数执行时长超过预期标红展示
- 当前项目中可疑的内存泄漏点展示
v8-analytics
和 v8-cpu-analysis
是完全等价的两个包,两者没有任何区别。
起因是想对 v8-cpu-analysis
引入v8的堆内内存结构分析,这样子继续在包名中引入 cpu
字样就不太合适了,所以改了个包名,为了兼容以前,故采用两者完全等价发布的方式。
$ npm install v8-analytics -g
或者
$ npm install v8-cpu-analysis -g
$ npm install v8-analytics
或者
$ npm install v8-cpu-analysis
如果你是全局安装的命令行模式:
//测试展示v8引擎逆优化函数
$ va test bailout
$ va test bailout --only
//测试展示执行时长超过你的预期函数
$ va test timeout
$ va test timeout 200
$ va test timeout 200 --only
$ va test leak
va test bailout --only
这个命令可以只把那些v8引擎逆优化的函数列出来展示。
va test timeout 200 --only
这个命令可以只把那些执时长超过200ms的函数列出来展示。
va test leak
可疑展示出测试的heapsnapshot文件中可疑的内存泄漏点。
这个npm包可以即用作于全局命令行模式,也可以嵌入你的JS代码:
这里的 xxx.cpu.json
文件是有v8-profiler生成的cpu日志文件:
$ va bailout xxx.cpu.json
这里会展示出所有的函数,并且把其中触发v8引擎逆优化的函数标红,你也可以像下面这样使用:
$ va bailout xxx.cpu.json --only
这样子就只会展示逆优化的函数以及v8给出的逆优化原因。
$ va timeout xxx.cpu.json
这样会展示出所有的函数,以及其执行时长
$ va timeout xxx.cpu.json 200
这样使用除了会展示出所有的函数,还会将所有的执行时长超过200ms的函数给标红展示出来。
$ va timeout xxx.cpu.json 200 --only
这样使用只会将所有的执行时长超过200ms的函数列出来展示。
$ va leak xxx.mem.json
这样使用可以列出当前Node项目中可疑的内存泄漏点。
'use strict';
const fs = require('fs');
const v8Analytics = require('v8-analytics');
//or you can use following, they're equival
//const v8Analytics = require('v8-cpu-analysis');
//list all js function and it's execTime
const json = JSON.parse(fs.readFileSync('./test.cpu.json'));
const str = v8Analytics(json);
console.log(str);
//list you heap memory info
const json = JSON.parse(fs.readFileSync('./test.mem.json'));
const {leakPoint, heapMap, statistics} = analysisLib.memAnalytics(allData)