求助js中闭包内存占用问题

axi2000 2012-03-06 02:39:55
如下代码: 执行到红色的部分时,bigString这个字符串占用的内存是否会释放掉。

function f1() {

var n = 999;
var bigString = "xxxxxx..."// 10万个长度的字符
function f2() {
alert(n++);
}

return f2;

}

var result = f1();

result();//此处执行完毕后
...全文
138 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
HolyNova 2012-03-06
  • 打赏
  • 举报
回复
存在.
AO = active object

result里包含(但不是全部)这些东西.
result:{
f2()'s AO:{},
f1()'s AO:{
n : 999,
bigString : "xxxxxx..."// 10万个长度的字符
}
global content:{}// 全局变量

}
lsw645645645 2012-03-06
  • 打赏
  • 举报
回复
在的。
czj15123243881 2012-03-06
  • 打赏
  • 举报
回复
虽然bigString变量未被使用,但其属于f1函数所在的执行环境,而该环境始终被result引用,所以应该不会被回收。
axi2000 2012-03-06
  • 打赏
  • 举报
回复
如果result的引用不释放,虽然bigString永远无法被程序访问到,垃圾回收永远也不会将其回收吧。
三石-gary 2012-03-06
  • 打赏
  • 举报
回复
http://www.cnblogs.com/likehua/archive/2011/03/04/1970775.html
Acesidonu 2012-03-06
  • 打赏
  • 举报
回复
result 还在,应该不会释放

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧