1. 首先要固定一个测试环境。具体来说,选择某一个可以重复的操作,作为标准的测试动作。

2. 刷新浏览器后用profiler抓下heap snapshot。

3. 进行操作,再一次抓下snapshot,重复多次进行比较。

在比较的页面里面看到, 在多个snapshot之间,这些对象都是不断增长的。深入调查这个对象

发现了一个很奇怪的方法调用。

找到了我们的代码

var domSelectionSelectRangesMethod = CKEDITOR.dom.selection.selectRanges;

CKEDITOR.dom.selection.selectRanges = function (ranges) {
try {
domSelectionSelectRangesMethod.call(this, ranges);
} catch (e) {
}
};

再查看了CKEditor的源码,发现在CKEditor里,selection只是个构造函数,selectRanges是原型上的方法。
该问题代码无法修改原型上的方法,只是徒劳地在构造函数上包装了一遍又一遍。这些方法的context造成了内存泄露。

利用chrome的profiler查找js的memory leak的更多相关文章

  1. 利用Chrome插件向指定页面植入js,劫持 XSS

    资源来自:http://www.2cto.com/Article/201307/225986.html 首页 > 安全 > 网站安全 > 正文 利用Chrome插件向指定页面植入js ...

  2. 前端性能优化之利用 Chrome Dev Tools 进行页面性能分析

    背景 我们经常使用 Chrome Dev Tools 来开发调试,但是很少知道怎么利用它来分析页面性能,这篇文章,我将详细说明怎样利用 Chrome Dev Tools 进行页面性能分析及性能报告数据 ...

  3. 从Chrome源码看JS Array的实现

    .aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } .crayon-line spa ...

  4. [Node.js] Identify memory leaks with nodejs-dashboard

    In this lesson, I introduce a memory leak into our node.js application and show you how to identify ...

  5. Linux 利用 locate 和 find 查找文件

    Linux 利用 locate 和 find 查找文件 命令 locate 用于快速查找文件.文件夹.此命令并没有在磁盘上查找所有文件,而是在预先建立的数据库里进行搜索.可以使用 updatedb 命 ...

  6. 移动WebApp利用Chrome浏览器进行调试

    详细的请看这个(HBuilder是我长期使用,而且值得支持的国内前端开发编辑器) http://ask.dcloud.net.cn/article/151 http://ask.dcloud.net. ...

  7. 【js】IE、FF、Chrome浏览器中的JS差异介绍

    如何判断浏览器类型 转:http://www.cnblogs.com/carekee/articles/1854674.html 1.通过浏览器特有的对象 如ie 的ActiveXObject  ff ...

  8. 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能

    原文:利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能1.在界面上添加几个checkbox和一 ...

  9. 【原】无脑操作:Chrome浏览器安装Vue.js devtool

    学习Vue.js时,Chrome浏览器安装Vue.js devtool能很方便的查看Vue对象.组件.事件等. 本文以Chrome浏览器插件Vue.js devtools_3.1.2_0.crx的安装 ...

随机推荐

  1. maven更新远程仓库速度太慢解决方法

    1.maven在更新下载jar包的时候,因为jar包默认是从国外服务器上下载的,所以速度特别慢 2.通过设置镜像的方法加快jar包下载 3.在maven安装目录下,/config/settings.x ...

  2. AutoLayout ViewDidAppear 小坑

    在应用AutoLayout的xib中获取某个view的frame时,如果在ViewDidLoad中获取,有可能获取不准,需要在ViewDidAppear中获取,原因是AutoLayout在ViewDi ...

  3. 锋利的js之验证身份证号

    我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构  公民 ...

  4. @MappedSuperclass注解的使用说明

    转载自:http://blog.sina.com.cn/s/blog_7085382f0100uk4p.html 基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclas ...

  5. DOM Document

    1.DOM Document对象 定义:每个载入浏览器的 HTML 文档都会成为 Document 对象.Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问. Docume ...

  6. getGLES1ExtensionString: Could not find GLES 1.x config!

    编辑模拟器中  Emulated performance 中不选  auto 和  Hardware - GLES 2.0,选择Software-GLES2.0.解决问题

  7. Modelica学习

    Annotation Choices for Suggested Redeclarations and Modifications Replaceable model sample(start,int ...

  8. Office 365 系列二 ------- 如何批量部署Office 客户端

    针对于第一篇文章所讲的,我们最用使用用户可以单个点击进行安装,但是如果我们终端用户太多的情况,不可能大家都点击单个文件进行安装了,这样子既耗费时间也耗费 公司的网络带宽,那么我们可以采取离线下载的方式 ...

  9. 笔记19-徐 如何在超大型数据库上运行DBCC CHECKDB

    ) --以上方法TB级数据库的DBA可以考虑试试

  10. java实现简单的验证码(待增强)

    package com.xxx; import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.a ...