【js】JavaScript手动回收垃圾_js手动触发gc-程序员宅基地

如何手动触发 JavaScript 垃圾回收行为?

转载自:https://github.com/cssmagic/better-dollar/issues/3

垃圾回收,即 garbage collect,简称 “GC”。

这里的 “手动” 指有效地、显式地、可控地触发浏览器 JavaScript 引擎的垃圾回收行为,比如通过点击页面中的按钮来调用 JS 方法,或使用浏览器提供的功能。

IE

IE 实际上提供了一个未公开的 JS 方法 CollectGarbage()。至少在 IE8 仍然存在此方法。

if (typeof window.CollectGarbage === 'function') {
    CollectGarbage()
}

Opera

旧版(非 Blink 内核)的 Opera 7+ 似乎也有一个手动触发 GC 的 JS 方法。

window.opera.collect()

Firefox

有文章 提到了两种方法:

Components.utils.forceGC()
window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
    .getInterface(Components.interfaces.nsIDOMWindowUtils)
    .garbageCollect()

区别在于前者只触发 JS 引擎内的垃圾回收,而后者还可以处理 XPCOM 对象的回收。对分析网页内的垃圾回收行为来说,前者足够了。

在最新的 Firefox 中,上述方法可能已失效(无法在控制台直接调用),也可能这些方法只能在 Firefox 扩展中使用。我稍后会找低版本的 Firefox 做更多测试。

更新:在 Firefox 3.6 中也无法直接使用上述方法。

更新:有一个扩展 MemChaser 似乎允许手动触发 GC。

更新:Firefox 在 about:memory 页面中原生提供了详细的内存监控功能,但结合上述扩展使用似乎更方便一些。

Chrome

Chrome 的 DevTools 对 JavaScript 的垃圾回收和内存泄漏提供了强大的分析工具。在 DevTools 的 “Timeline” 页面可以手动点击 “CollectGarbage” 按钮来触发 GC。

详情可参见这篇文章:《搞定JavaScript内存泄漏》

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/q6678188/article/details/53520779

智能推荐

爬取豆瓣 TOP250 电影排行榜-程序员宅基地

文章浏览阅读3.4k次,点赞3次,收藏21次。很多朋友在看一部电影前都喜欢先找一下网友们对该片的评价。国内的电影评分网站,要数豆瓣最出名。接下来我们将爬取豆瓣至今TOP250的电影的详细信息。豆瓣有专门一个 TOP250 的电影链接 -> https://movie.douban.com/top250首先我们模拟浏览器发送请求,将数据保存为html网页格式,查看返回数据是否正常。import requestsfrom bs4 ...

什么是物联网(IoT)?-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏32次。IoT(即物联网)一词是指互联设备的集合网络,以及促进设备与云之间以及设备自身之间通信的技术。由于价格低廉的计算机芯片和高带宽电信的出现,我们现在已有数十亿台设备连接到互联网。也就是说,牙刷、吸尘器、汽车、机器等日常设备可以利用传感器收集数据,智能地为用户服务。 物联网将日常“事物”与互联网相结合。90 年代以来,计算机工程师一直在为日常用品添加传感器和处理器。但是,这项工作最初进展十分缓慢,因为芯片又大又笨重。名为 RFID 标签的低功耗计算机芯片是首个用于跟踪昂贵设备的芯片。随着计算设备尺寸不断缩小,_iot

浏览器多线程和js单线程_浏览器点击事件是单线程吗-程序员宅基地

文章浏览阅读1.4w次,点赞11次,收藏55次。0.前言开发过程中遇到js线程和ui渲染线程互斥问题。导致ui无法正常更新等问题。这些问题的根源就是因为浏览器的多线程和js的单线程引起的。看本篇博客之前,应该充分理解消息队列,事件循环,同步异步任务等概念。 这些概念以前都知道,也了解多线程的概念。但是当遇到问题的时候,这些东西都被抛到脑后,值得深思。1.知识点补充js单线程js运作在浏览器中,是单线程的,js代码始终在一个线程上执行,此线程被称_浏览器点击事件是单线程吗

代码学习记录25---回溯算法最后一天-程序员宅基地

文章浏览阅读833次,点赞22次,收藏15次。N皇后,数独

Alcohol 120%刻录教程-程序员宅基地

文章浏览阅读261次。Alcohol 120%刻录教程 【虎.无名】由于非正版的Nero可能刻出废盘,所以我改用“Alcohol 120%”了,它不但可用来虚拟光驱,刻录功能似乎也不弱。参考:Nero刻出废盘的秘密(待考证)[url]http://zeroliu.blogdriver.com/zeroliu/..._利用alcohol 120%制作音乐cd

细数【SD-WEBUI】的模型:谁是最适合的模型&从哪里找到它们_sd模型网站-程序员宅基地

文章浏览阅读8.4k次,点赞6次,收藏27次。神奇的模型在哪儿?谁才是最适合我的模型?村口大黄狗为何连夜嚎叫?……_sd模型网站

随便推点

php数组转请求参数,学习猿地-php 数组如何转为url参数-程序员宅基地

文章浏览阅读176次。php数组转为url参数的实现方法:首先创建一个PHP示例文件;然后定义一个数组;最后通过“http_build_query( $array )”方法将数组转为URL参数即可。php 将数组转换网址URL参数$array =array ( 'id' =123, 'name' = 'dopost' );echo http_build_query( $array );//得到结果id=123name=..._php 数组转reqeust

Linux | nslookup详细介绍一下这指令的作用以及用法_nslookup命令的作用和使用方法-程序员宅基地

文章浏览阅读4.3k次。nslookup是一个网络工具,通常用于查询域名系统(DNS)服务器以获取主机名或IP地址相关的信息。它可以用于查找主机名的IP地址,反向查找IP地址的主机名,以及查询DNS记录的其他信息。_nslookup命令的作用和使用方法

lucene、lucene.NET详细使用与优化详解-程序员宅基地

文章浏览阅读1.1k次。2019独角兽企业重金招聘Python工程师标准>>> ..._n n ___': - _* . &; v. 7_ 'v & .

用python和pygame写游戏_用Python和Pygame写游戏-从入门到精通(6)-程序员宅基地

文章浏览阅读138次。掌握了小小的像素,我们可以使用更加复杂一点的东西了,对,就是图像,无数的像素的集合~还记得上次我们为了生成的一张图片,花了无数时间,还好一般游戏不会在游戏的过程中动态生成图像,都是将画好的作为资源封装到游戏中。对2D游戏,图像可能就是一些背景、角色等,而3D游戏则往往是大量的贴图。虽然是基础,这里还是要罗嗦一下,之前说的RBG图像,在游戏中我们往往使用RGBA图像,这个A是alpha,也就是表示透..._pygame 中 screen.set_clip

TCP/IP协议_tcp/ip包内容-程序员宅基地

文章浏览阅读1.6k次。笔记_tcp/ip包内容

javaweb基础_创建一个savelogin.java文件,该页面作用-程序员宅基地

文章浏览阅读1.4k次。静态网站:在tomcat的webapps目录下创建一个目录(命名必须不包含中文和空格),这个目录称之为项目目录在项目目录下创建一个html文件动态网站:在tomcat的webapps目录下创建一个项目目录在项目目录下创建如下内容WEB-INF目录在WEB-INF目录下创建web.xml文件创建静态或动态页面http协议:无状态协议,仅连接一次(ftp_创建一个savelogin.java文件,该页面作用