闭包会产生内存的泄露?

cutemurphy 2011-03-09 04:30:07
闭包会产生内存的泄露
有个问题。就是 外围函数执行完毕以后,它的活动对象就销毁。
这个时候 如果有闭包。那么它的活动对象就不能销毁。
但是 我觉得 闭包 不是在外围函数里头吗,外围函数和闭包应该是个整体才对。外围执行完毕则闭包也应该是执行完毕的。
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JKelfin 2011-03-11
  • 打赏
  • 举报
回复
特别注意,浏览器回收内存方式有个漏洞,js与dom对象的内存管理是分开处理的。当javascript对象与dom对象循环引用的时候这部分内存一直都不会被回收,内存管理会觉得他们被引用了(但是不知道另外的js对象或者dom也是没用了的),所以不会被回收。
浴火_凤凰 2011-03-10
  • 打赏
  • 举报
回复
不喜欢闭包,也不建议新手写闭包
king_on 2011-03-10
  • 打赏
  • 举报
回复

function func(seperator)
{
function show(str1,str2)
{
alert(str1+seperator+str2);
}
return show;
}
var show=func("//");
show("D:","My Documents");

这样就构成一个闭包了么(新手勿喷)?
这样内存无法释放是因为尚有引用指向它,这也不是内存泄露啊?
zwjcome 2011-03-10
  • 打赏
  • 举报
回复
对象实例相互引用,循环引用造成了GC不能释放了
参考http://blog.csdn.net/birdwindy/archive/2007/12/13/1934017.aspx
TopDreamer 2011-03-09
  • 打赏
  • 举报
回复
有好的解决方法么?
bhbhxy 2011-03-09
  • 打赏
  • 举报
回复
确实是存在这个问题
太阳黑夜 2011-03-09
  • 打赏
  • 举报
回复
外围执行完毕之后,要看闭包是否在其他地方有引用,如果有引用,只要闭包不销毁,外围函数,包括外围函数引用的对象,都不能被销毁,也就是内存泄漏

87,922

社区成员

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

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