把一个有值的对象赋值为空,那原本对象的值,还存在吗?
对于一些公共常用字符,我好理解。
但是,对于一些比较复杂的对象有点迷糊了。
比如:var tempObj = xxxxxx (这是复杂的对象,假设占很大内存),此时我把tempObj = null;赋值为空,那么这个复杂的对象还存在吗?这个tempObj原本占有的内存会释放吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
obj = null,代表指向一块内存的引用被干掉了,但是内存在第一时间可能并没有被立即释放掉,浏览器gc是有一定时机的,并不一定立刻就释放内存。
引用MDN的一段示例代码
具体可以看看这篇文章
https://developer.mozilla.org...
在tempObj = null时,对象依然存在于内存,但是会在下一次进行垃圾回收时被释放掉
js中一切皆为对象,所以说常用字符和复杂的json是一样的。
如果tempobj=null;之前有别的复制引用( var b = tempObj)则js的垃圾回收机制不会对其进行回收。