内存泄漏对开发者来说一般很难检测因为它们是由一些大量代码中的意外的错误引起的,但它在系统内存不足前并不影响程序的功能。这就是为什么会有人在很长时间的测试期中收集应用程序性能指标来测试性能。

最简单的检测内存泄漏的方式是用任务管理器检查内存使用情况。在Chrome浏览器的新选项卡中打开应用并查看内存使用量是不是越来越多。还有其他的调试工具提供内存监视器,比如Chrome开发者工具。这是谷歌开者这网站中的堆分析的特性的教程。

目前IE的常用内存泄露工具主要有两个:sIEve和IE JavaScript Memory Leak Detector。

sIEve 官方网站: http://home.wanadoo.nl/jsrosman/

下载:Download sIEve-0.0.8.exe

这是一款独立的桌面exe程序,无需安装,内部嵌入了一个IE 浏览器控件,用户可以通过该控件访问需要测试的网页。

这款工具源于Sourceforge的开源项目ieleak,但不知为何后来开发停滞了,没有版本的更新,只能看到留下的源代码。

从代码中可以看出,sIEve监控DOM对象中的引用数目,如果在页面卸载之后,还存在引用大于0的DOM对象,它就会显示这些DOM对象,同时还会实时的显示在用户操作的时候内存和DOM泄露的情况。

优点:有源代码、可以参考学习,独立工具,无需安装。我记得看过一则新闻,IE8发布时,IE的开发经理还建议开发人员使用sIEve调试内存泄漏情况。

缺点:只能提供没有释放的DOM对象,但是不知道DOM对象是javaScript代码在何时何处导致泄漏的,无法定位泄露原因;版本没有更新。

IE JavaScript Memory Leak Detector 官方网站:http://blogs.msdn.com/gpde/pages/javascript-memory-leak-detector.aspx

这款工具由微软的内部员工开发,功能看起来比sIEve要强大。

IE JavaScript Memory Leak Detector需要安装,作为IE的插件形式存在,可以在工具栏的菜单中启用和关闭,启动之后在IE的下端出现一个工作窗口。

这个工具将监控代码注入到了IE浏览器中的动态链接库中,IE在做DOM或者JavaScript解释时,工具都会截获、记录并转发,IE并没有意识到IE JavaScript Memory Leak Detector的存在。

用户可以在IE中打开IE JavaScript Memory Leak Detector,然后访问需要测试的网页,在切换网页时,IE JavaScript Memory Leak Detector会报告可疑的内存泄露,包括泄露的DOM对象,引起泄漏的引用代码和代码出处,这个工具对于简单的javascript代码毫无疑问是非 常好用的,但是我在实际使用当中发现对于复杂的代码,如使用了dojo工具包的Javascrpt代码,即使发生了内存泄露,引起泄漏的引用代码和代码出 处这两项功能很难派上用场,最后都会指向dojo的源文件,而且指的位置也可能出错,比如定位到了注释上,汗….

遗憾的是,这个工具除了beta版之后,再也没有更新。

另外,IE JavaScript Memory Leak Detector可以分别模拟IE6\IE7的泄露情况,根本区别是IE7对内存泄露问题的一大进步是可以回收所有attach到DOM树上的泄露对象。建议升级到IE8的浏览器模式下。

优点:包含泄露定位功能。

缺点:对于复杂的Javascript代码,无法准确定位泄露位置。

转载于:https://www.cnblogs.com/rubyxie/articles/3544061.html

介绍两个非常好用的Javascript内存泄漏检测工具相关推荐

  1. Meta开源JavaScript内存泄漏监测工具MemLab

    一.MemLab简介 上周,Facebook母公司Meta 宣布了开源 MemLab,一个基于 Chromium 的浏览器的 JavaScript 应用程序内存泄漏监测工具.同时,Facebook 技 ...

  2. 内存问题检测工具的介绍

    C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.但是,在这样灵活操作的后面,还隐藏着很危险的操作,那就是关于内存的问题.一看到内存的问题,大部分的初学者就开始傻 ...

  3. 什么是javascript内存泄漏?以及解决方法

    什么是javascript内存泄漏?以及解决方法 一.什么是javascript内存泄漏? 二.常见的内存泄漏 1.意外的全局变量(通常是变量未被定义或者胡乱引用了全局变量) 2.计时器 3.闭包 4 ...

  4. javascript内存泄漏调试工具mac_node.js 内存泄漏的秘密

    一直以来,跟踪 Node.js 的内存泄漏是一个反复出现的话题,人们始终希望对其复杂性和原因了解更多. 并非所有的内存泄漏都显而易见.但是,一旦我们确定了其模式,就必须在内存使用率,内存中保存的对象和 ...

  5. javascript内存泄漏调试工具mac_Vuex3.1.1更新:支持jsDelivr,修复内存泄漏

    JavaScript 已成为庞大.多样化并快速发展的编程语言.每当 JS 的框架或库发布更新,社区中与之相关的项目也会随之作出改进--Vue.js 及其附属项目就是典型例子. Vuex 是简单直观的状 ...

  6. 排查Javascript内存泄漏

    引言 也许你已经知道,Chrome DevTools里的Performance面板和Memory面板可以用来定位内存问题.但当你真正上手使用它们的时候,往往会觉得不知所措 -- 因为里面有着各种各样的 ...

  7. JavaScript内存泄漏知多少?

    垃圾回收解放了我们,它让我们可将精力集中在应用程序逻辑(而不是内存管理)上.但是,垃圾收集并不神奇.了解它的工作原理,以及如何使它保留本应在很久以前释放的内存,就可以实现更快更可靠的应用程序.在本文中 ...

  8. JavaScript内存泄漏定位

    本文转自JS内存泄漏排查方法--Chrome Profiles 概述 Google Chrome浏览器提供了非常强大的JS调试工具,Heap Profiling便是其中一个.Heap Profilin ...

  9. JavaScript内存泄漏

    内存泄漏简介 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果. 内存泄漏缺陷具有隐蔽性. ...

最新文章

  1. ROS2概述和实践入门
  2. python 回归去掉共线性_一文讲解机器学习算法中的共线性问题
  3. PostgreSQL-JDBC疑似bug:部分接口参数的表名、列名必须全部小写
  4. spring boot通过命令行配置属性
  5. 关于VS无法启动程序,系统找不到指定的路径,最标准的回答
  6. 满足 Google Play 目标 API 等级 (targetSdkLevel) 的要求
  7. BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛
  8. java连接hive代码_Hive:用Java代码通过JDBC连接Hiveserver
  9. 基于最大正向匹配算法的中文分词
  10. IDEA自动生成Mapper和实体文件
  11. SpeedFan 控制风扇转速
  12. ae万能弹性表达式_18种常用AE表达式解析【建议收藏】
  13. php 邮箱附件 大小限制,Exmail+Postfix修改邮件附件大小
  14. 外接圆、内切圆半径公式及对应关系知识点总结
  15. 计算机只存在于计算机硬盘上,计算机病毒只存在于计算机硬盘上。()
  16. 首批小程序出炉,小游戏?
  17. oracle mysql substr_Oracle数据库中substr()函数简介说明
  18. 【网站排名优化】如何对网站内容进行优化
  19. C++中goto的使用
  20. python excel处理数据的优点_python处理excel的优势是什么

热门文章

  1. 计算机原理说课教案,《 计算机组成原理 》 说课
  2. 打包图片上传cdn_紧抓5G新时代机遇 又拍云创新发展CDN行业
  3. 织梦 html 优酷,让织梦CMS的后台编辑器支持优酷视频
  4. 5m 云服务器2核4g_华为云服务器2核4G 5M 248一年
  5. html display 显示,CSS display显示
  6. java phantomjs 2.1.1_Java之网络爬虫WebCollector2.1.2+selenium2.44+phantomjs2.1.1
  7. PyTorch框架:(1)基本处理操作
  8. 正点原子:STM32F103(战舰)、STM32F407(探索者)、STM32F103(MINI)原理图和PCB
  9. imgcook:各种图像一键自动生成代码的工具
  10. CV算法复现(分类算法3/6):VGG(2014年 牛津大学)