对于一些公共常用字符,我好理解。
但是,对于一些比较复杂的对象有点迷糊了。
比如:var tempObj = xxxxxx (这是复杂的对象,假设占很大内存),此时我把tempObj = null;赋值为空,那么这个复杂的对象还存在吗?这个tempObj原本占有的内存会释放吗?
对于一些公共常用字符,我好理解。
但是,对于一些比较复杂的对象有点迷糊了。
比如:var tempObj = xxxxxx (这是复杂的对象,假设占很大内存),此时我把tempObj = null;赋值为空,那么这个复杂的对象还存在吗?这个tempObj原本占有的内存会释放吗?
js中一切皆为对象,所以说常用字符和复杂的json是一样的。
如果tempobj=null;之前有别的复制引用( var b = tempObj)则js的垃圾回收机制不会对其进行回收。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答942 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
obj = null,代表指向一块内存的引用被干掉了,但是内存在第一时间可能并没有被立即释放掉,浏览器gc是有一定时机的,并不一定立刻就释放内存。
引用MDN的一段示例代码
具体可以看看这篇文章
https://developer.mozilla.org...