如果对象的实例没有引用该怎么办?

弗雷佐德先生

我不知道缺少任何引用的对象实例是否最终会被自动销毁/替换为新对象被实例化的时间。

例如:

let foo = new Object();
foo = "foo"

由于创建的实例是否已经new Object()销毁,因为不再有对其的引用了?

内存中的实例发生了什么?

会在执行新操作时说存储空间被替换new Object()吗?

TJ人群

由于创建的实例是否已new Object()销毁,因为不再有对其的引用了?

可能,最终。这些细节不是您可以直接在代码中观察到的东西,¹不在JavaScript规范中。垃圾收集(回收不再由应用程序引用的内存)是JavaScript引擎的一个非常复杂的领域,编写和维护这些引擎的人们在努力使我们的代码运行时不断对其进行审查和改进。尽可能快。

内存中的所说实例发生了什么?

就您的代码而言,一旦您不再引用该实例,该实例就会消失。实际上,当/如果垃圾收集器决定需要这样做,实例曾经占用的内存可能会在以后的某个时间(可能得多回收(以供将来使用)

当我们执行新的新Object()时,会说存储空间会被替换吗?

它根据JavaScript引擎(V8与SpiderMonkey与JavaScriptCore等)以及内存是否充足还是不足而有所不同。但是再说一遍:就您的代码而言,该实例在您不再引用它时就消失了。


重要的是,不要基于对垃圾收集方式的观察或假设而编写代码,这有几个原因,其中包括:不同的JavaScript引擎不同;它取决于引擎的特定版本它取决于发生了什么。


¹我也许应该提到的JavaScript刚刚接到了几个新功能(他们将在ES2021规格):WeakRefFinalizationRegistry这使它看起来就像你可以在你的代码中观察到的垃圾收集。但是这些功能是经过精心设计的,不会过多地揭示垃圾收集器的工作,从而避免人们根据看到的情况编写代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果没有上下文该怎么办?

如果销毁选项类型内的对象该怎么办?

MVC-如果没有内容,谁来决定该怎么办?

如果存储库/ PPA没有发布文件,该怎么办?

如果要使用没有更新编译器的新功能该怎么办?

Excel:如果某个特定团队没有参加基于联赛的比赛该怎么办

如果我没有将交易ID发送到PayPal PDT,该怎么办?

我的Nvidia 8400GS是否超频了?如果没有,我该怎么办?

位置0没有行...。我该怎么办..?

从外部删除实例该怎么办?

如果没有键入内容(或tsd)怎么办?

如果没有匹配类型怎么办?

如果我没有git lfs锁怎么办

如果代码中没有 Tk() 声明怎么办

如果我没有bashrc怎么办?

如果表没有主键怎么办

如果AsyncTask被取消,该怎么办?

如果GOMAXPROCS太大,该怎么办?

封闭文件对象该怎么办?

Play商店说我的应用程序必须具有至少28的targetSDK。如果没有,该怎么办?

如果我没有在Azure服务总线中调用IMessageSession的CloseAsync和CompleteAsync方法,该怎么办?

是否可以等待未声明为异步的IO操作?如果没有,我该怎么办?

grep可以一起输出匹配的内容和全部计数吗?如果没有,该怎么办?

如果我没有 <label> 元素和 <input type="email"> 元素一起使用,我该怎么办?

如果没有ID,名称等,并且driver.find_elements_by_xpath无法使用,该怎么办?

如果我所在的州/国家/地区没有Ubuntu LoCo团队怎么办?我该如何开始?

如果 Django 在我请求时没有发送任何电子邮件,我该怎么办?

如果我决定终止我已预先付款的实例,该怎么办?

使用类的方法更新类变量的实例是否正确?如果是,该怎么办?