【发布时间】:2023-03-03 05:59:21
【问题描述】:
这个答案似乎是相关的,但我需要更具体的信息:Garbage collection: object properties
假设我有一个全局对象:
var myObj {
'some prop' : null
};
和一个返回结果的 Ajax 调用(为了耐心而简化):
result = {
prop1 : someObj,
prop2 : otherObj
}
考虑这个操作:
ajax.get('some url', function(result){
myObj['some prop'] = results.prop2
});
由于对象是通过引用分配的,而不是像原语那样复制,我担心整个 results 对象将保留在内存中,因为我的全局对象 myObj 现在引用了它的一个属性 (prop2) .
我想如果我运行太多 Ajax 请求,这可能会成为数据泄漏的来源。
我不需要所有结果,只需要一些属性。我应该有额外的工作从结果中删除不需要的属性或克隆结果属性而不是分配吗?
我想知道浏览器垃圾收集器是否足够聪明来处理这个问题,和/或这不是一个真正的问题。
【问题讨论】:
-
我认为不会存储整个
result。嵌套对象是参考映射。因此,如果您分配一些内部对象,则不应保留整个地图。但这只是一个猜测,我不确定
标签: javascript ajax object memory-leaks garbage-collection