Hri*_*dov 6 javascript primitive garbage-collection
如果我有以下代码:
function MyClass() {
this.data = {
// lots of data
};
}
var myClassInstace = new MyClass();
var myobj = {
num:123,
str:"hello",
theClass:myClassInstance
};
Run Code Online (Sandbox Code Playgroud)
我知道这是绝对必要的:
myobj.theClass = null;
Run Code Online (Sandbox Code Playgroud)
为GC 释放myClassInstance它的data财产.然而,我应该怎么做myobj.num和myobj.str?我还必须给他们一个价值null吗?事实上,他们是原始的改变任何关于GC的事情吗?
实现垃圾收集的JavaScript运行时将能够在代码无法再访问值时立即收集项目.这对于对象引用和原语都是如此.收集项目的确切时刻的详细信息因实现而异,但甚至不需要将对象引用设置为null(如您所述),除非您需要比当前函数的自然终止更早地清理对象.
这一切都与"范围"和范围链的基本概念联系在一起.当项目不再位于任何其他对象范围链中时,可以收集该项目.清楚地理解这一点将回答这个问题,也有助于理解闭包,这些闭包是物品在内存中停留的时间比您预期的要长.
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |