深入浅出Node.js读书笔记:内存泄漏排查(5.5)

本文介绍了如何使用node-heapdump和node-memwatch工具来检测和分析Node.js应用的内存泄漏问题。通过实例代码展示这两个工具的使用方法,包括如何抓取内存快照、监听内存变化事件以及如何根据统计信息定位内存泄漏源头。
摘要由CSDN通过智能技术生成

现在已经有许多工具用于定位Node应用的内存泄漏,下面是一些常见的工具。

1.v8-profile,可以用于对V8堆内存抓取快照和对CPU进行分析,目前项目很久没有人维护。
2.node-heapdump。它允许对V8堆内存抓取快照,用于事后分析。
3.node-mtrace。 它使用GCC的mtrace工具来分析堆的使用。
4.dtrace。
5.node-memwatch。

这里只介绍通过node-heapdump和node-memwatch两种。

5.5.1 node-heapdump

想了解node-heapdump对内存泄漏进行排查的方式,我们需要先构造如下一份内存泄漏的代码示例,并将其存为server.js文件。

	var leakArray = []; 
	var leak = function () {
    
 		leakArray.push("leak" + Math.random()); 
	}; 
	
	http.createServer(function (req, res) {
    
	 	leak(); 
	 	res.writeHead(200, {
   'Content-Type': 'text/plain'}); 
	 	res.end('Hello World\n'); 
	}).listen(1337); 

	console.log('Server running at http://127.0.0.1:1337/');

每次访问,leakArray都会增加新的数据。从而造成内存泄漏。

安装node-heapdump,通过npm install healpdump,安装后,通过如下代码:

var heapdump = require(‘heapdump’);

服务启动后,通过kill -USR2 抓拍一份内存快照。

通过Chrome的开发者工具打开查看。

5.5.2 node-memwatch

准备一份内存泄漏的代码:

	var memwatch = require('memwatch'); 
	memwatch.on('leak', function (info) {
    
 		console.log('leak:')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值