`
djjchobits
  • 浏览: 57043 次
  • 性别: Icon_minigender_1
  • 来自: 廊坊
社区版块
存档分类
最新评论

javascript 内存泄露工具使用

阅读更多

javascript内存泄露的问题一直以来都不受到大家的重视,原因是对用户的影响没有太实际的表现,或许近几年内存发展迅速。脚本内存再泄露也不会有太大影响。

当然作为前端开发的同学们,就不能有这样的侥幸心理。出现memory leaks很大程度上是因为程序的不成熟和编码不太规范造成的。不过,这里就不说如何出现问题的,对问题的出现有兴趣可以参考以下地址:

  • Understanding and Solving Internet Explorer Leak Patterns
  • IE's memory-leak fix greatly exaggerated
  • Memory Leakage in Internet Explorer – revisited

     

    这里主要说说,目前几个检查javascript内存泄露的工具使用方法:

    首 先我们用到的工具有三个 Drip/sIEve ,Javascript Leaks Detector, leak monitor。其中前两个是用于检查ie的,leak monitor 是用来检查firefox的情况的。这里重点说一下ie下的这两个工具,由于firefox的GC机制比ie强壮,只要ie的问题消除了,其他浏览器基本 上不会有什么问题。

     

    1.Drip/sIEve

    Drip和sIEve的作者应该是同一个人,连open souce上的项目都是在一起的。不过,平时我们主要使用sIEve就可以了,sIEve的功能比Drip强大一些

    image

    sIEve 界面很简单,左侧:内嵌了一个浏览器控件,我可以访问任何网址,下方还有个内存检查,这样我们可以方便看出内存的升降情况以及dom使用数量曲线。

    右侧面板,我们可以通过 Show in use 看到目前页面使用的dom的情况,Show Leaks 可以看到内存泄露的dom。当然每次显示泄露的情况必须是页面刷新后,看到上一个页面的泄露情况。

    同时通过右侧的数据颜色,我们可以看到内存的升降和具体的数量级

                 image

    •  

    不过sIEve的工作原理是对所有dom进行了一次hack,然后自己判断那些dom没有被释放掉,但是具体的情况比较难分析出来。而且跟踪有问题的dom需要一定技巧,对于大型的应用程序,跟踪难度大。

     

    不过用来检测小模块的内存使用情况还是一个不错的选择,特别是大项目模块细分后,对每个模块的单独测试还是比较不错的

    谢谢怿飞同学提示的下载地址, Drip/sIEve下载地址:
    http://home.orange.nl/jsrosman/

     

    2. Javascript Leaks Detector

    这是来自微软GPDE团队的一个小工具,下面简称JLD

    官网: http://blogs.msdn.com/gpde/pages/javascript-memory-leak-detector.aspx

    安装后,我们可以在ie浏览器的 查看->浏览器栏中找到

    image

     

    JLD强大之处在于能够模拟IE6和IE7的GC情况,和真实的回收情况。这样可以做一个比较。

    image  

    这里通常能只能反应IE6和IE7的理想情况,我们需要选择下面Actual Leaks来反映当前浏览器的真实情况。

     

    image

    浏览器刷新后,我们就可以看到上次页面的结果了,绿色代表没有发现内存泄露,红色代表发现了内存泄露,蓝色是当前加载完成的页面,当然还有黑色,是指正在加载的网页

    当我们展开一个有问题的页面时,

    image

    我们可以看到一个有问题分支Leaks.这里列出了有问题的节点,同时还能帮我们列出出现问题的脚本在什么地方。

     

    这点非常方便我们定位出泄露的问题所在。不过要使用脚本调试,我们必须要打开ie的脚本调试功能

    image

    在ie选项的高级中,我们去掉这两个勾即可

     

     

    3. Leak Monitor

     

    这 是firefox上唯一一个检查内存泄露的工具,不过这里舜子不太推荐使用。因为firefox的内存GC机制比IE强悍,不必作为重点考虑对象。只要 ie的问题能处理好,firefox上基本上也没有什么问题。而且有ie这两个强悍的软件帮忙基本上能解决大部分问题了。

     

    可惜这个工具的体验很糟糕,会让人很有一种抓狂的感觉。如果您还要继续尝试可以到这里下载: https://addons.mozilla.org/zh-CN/firefox/addon/2490

分享到:
评论
1 楼 avrilxu 2011-03-04  
在IE6下,很多已知的内存泄露问题,都检测不出来,楼主有没有同样的感觉??

相关推荐

    测试JavaScript在IE中的内存泄露

    测试JavaScript在IE中的内存泄露,很好用的一个工具

    vue单页应用的内存泄露定位和修复问题小结

    在前端项目(PC端)中,内存泄露的定位往往比修复更加困难,即使google浏览器有提供Memory工具,但是面对成千上万的元素和错综复杂的引用关系,开发则依然很难快速定位到问题代码块。 一、什么是内存泄漏? 系统进程...

    性能调优之Javascript内存泄漏

    但是,IE的早些版本(IE7和之前)中内存泄漏是很容易出现的,因为内存管理器不能正确理解Javascript生命周期而且在周期被打破(可以通过赋值为null实现)前不会回收内存。在大型Web应用程序中内存泄漏是一种常见的意外...

    浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验

    引言 Memory Leak 是最难排查调试的 Bug 种类之一,因为内存泄漏是个 ...对于 JavaScript 来说,针对不同的平台,调试工具也是不一样的,最常用的恐怕还是 Chrome 自带的各种利器(针对 browser 也好,nodeJS 也好)都

    dream_tabs:一款 Chrome 扩展程序,为节约浏览器内存而开发的标签收纳工具

    一款为节约浏览器内存而开发的标签收纳工具。 开发原因 1、主要为自用而开发。做为经常使用浏览器人群,总会打开一堆标签,但有一些标签不想关闭,担心下次需要打开不方便找到。当打开太多标签长期不关闭,又导致...

    duilib+cef+echarts,cef多窗口,js与c++交互(带回调函数的)双向通信

    (4)cef版本为80.1.15版本,经过测试稳定,无内存泄露等问题,可直接使用。 (5)将cef js于c++交互相关功能封装到了一个库中。可直接引用到项目中使用 (6)同时包含了echarts相关文件 (7)代码完成,有实例程序...

    loadrunner测试资料

    本文介绍了几个比较典型的服务器评测软件,无论什么评测工具,基本的技术都是利用线程技术模仿和虚拟用户,在这里主要的难点在于测试脚本的编写,每种工具使用的脚本都不一样,但是大多数工具都提供录制功能就算是...

    Avant Browser 便携版 2010 build 126

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    Avant Browser 2010 budil 126||稳定,便捷,不假死~

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    Avant Browser 2010 build 126

    多进程:多进程的设计给你带来不崩溃、不死锁、没有内存泄露的网络浏览器体验和高稳定性。当一个标签死锁的时候,他不会导致你整个浏览器没响应或者其他页面死锁。 在线书签:通过Avant的在线存储可以任何地方,办...

    白帽子讲浏览器安全.钱文祥(带详细书签).pdf

    2.5.3 javascript/vbscript伪协议 41 2.5.4 伪协议逻辑出错:某浏览器跨任意域脚本注入一例 42 2.6 本章小结 43 3 探索浏览器的导航过程 45 3.1 导航开始 45 3.1.1 浏览器的导航过程 46 3.1.2 DNS请求 46 ...

Global site tag (gtag.js) - Google Analytics