actionscript-3 – 如果没有调用clearTimeout(),flash.utils.set
ActionScript 3 documentation for
flash.utils.setTimeout 声称:
这听起来很荒谬.没有理由它应该持有一个它永远不会再调用的函数/闭包的引用,以及the equivalent JavaScript functions do not leak memory. 这是真的? 解决方法
至少在当前版本的Flash中,情况并非如此.
我创建了一个函数,它创建一个大字符串,创建一个引用它的闭包,然后用闭包调用setTimeout. public function tick():void { var data:String = "helloworld"; for (var j = 0; j < 20; j++) { data += data; } var f = function() { var i = 0; if (data.length > 0) { i++; } }; setTimeout(f,0); } 我经常运行此函数,并使用System.totalMemory(以及OS X活动监视器)来监视Flash的内存使用情况. function Main():void { setInterval(tick,10); setInterval(display,500); } public function display():void { trace("Memory usage: " + System.totalMemory + "B."); } 内存使用量会短暂上升,但随着垃圾收集器的进入,内存使用率会下降.平均内存使用量在几分钟内保持稳定. 当我修改代码以保持对每个closure1的显式引用时,内存使用量在几分钟内就会增加到几千兆字节.文档已过时. Flash不会保留对传递给setTimeout的闭包的引用. (至少在OS X上;我认为它在Windows上是相同的.) 1我创建了一个Array作为静态类var,并在调用setTimeout之前将每个f推到它上面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 在从RVM迁移到rbenv后,在Jenkins中找不到
- 贴一段SSH前台校验XML,并解释一个错误
- 103.Which two statements are true regarding the Oracle
- 什么是依赖注入
- c – 在OSX上从x86读取共享内存到x64,反之亦然
- EMC、Pure和NetApp推新品,NAS闪存场景在哪里
- 正则表达式 – 将[b] xxx [/ b]替换为粗体’xxx’
- React PureComponent 源码解析
- SQLite的架构 (The Architecture Of SQLite)
- ZOJ--2314--Reactor Cooling【无源汇上下界可行流】