这个Javascript会导致内存泄漏吗?

这个Javascript会导致内存泄漏吗?,javascript,memory,Javascript,Memory,请注意,在下面的代码中,子对象获取对其父对象的引用。当对父对象的原始引用设置为null时会发生什么?由于仍然存在来自孩子的活动引用,家长是否会留在身边 Javascript var parent = function() { var self = this; self.runme = function() { document.getElementById('output').innerText = 'run me'; } self.child = new child(

请注意,在下面的代码中,子对象获取对其父对象的引用。当对父对象的原始引用设置为null时会发生什么?由于仍然存在来自孩子的活动引用,家长是否会留在身边

Javascript

var parent = function() {
  var self = this;
  self.runme = function() {
    document.getElementById('output').innerText = 'run me';
  }

  self.child = new child(self);

  return self;
}
var child = function(parent) {
  var self = this;
  var parent = parent;
  self.event = function() {
    parent.runme();
  }
}
var p = new parent();
p.child.event();
p = null;
HTML

<div id="output">
  old value
</div>

旧价值
小提琴

最终,父级和子级都将被垃圾收集,因为父级和子级都不再“可访问”。这里没有内存泄漏。假设您正在处理一个现代JavaScript解释器


最终,父级和子级都将被垃圾收集,因为父级和子级都不再“可访问”。这里没有内存泄漏。这是假设您正在处理一个现代JavaScript解释器。

不应该这样做,因为大多数垃圾收集器都是基于JavaScript解释器的思想。基本上,如果无法从图的根访问对象,则可以安全地收集该对象。初始化后,创建如下图形:

root -> parent <-> child

因为父对象和它的从属对象都不可访问,所以它们都可以安全地收集。

不应该这样,因为大多数垃圾收集器都基于。基本上,如果无法从图的根访问对象,则可以安全地收集该对象。初始化后,创建如下图形:

root -> parent <-> child

由于父项和其从属项都不可访问,因此可以安全地收集它们。

您是否尝试过运行任何控制台性能日志记录,以查看内存负载情况?您是否遇到了导致您认为存在内存泄漏问题的特定问题?当对父级的原始引用设置为null时会发生什么情况GC会尽快清理它。不,我只是想知道,一般来说,上面的模式是否会导致泄漏。“由于仍然有来自子对象的活动引用,父对象是否会留在附近?”-是的。“这个Javascript会导致内存泄漏吗?”-不会。子脚本会被收集,父脚本也会被收集。您是否尝试运行任何控制台性能日志记录来查看内存负载情况?您是否遇到了导致您认为存在内存泄漏问题的特定问题?当对父级的原始引用设置为null时会发生什么情况GC会尽快清理它。不,我只是想知道,一般来说,上面的模式是否会导致泄漏。“由于仍然有来自子对象的活动引用,父对象是否会留在附近?”-是的。“这个Javascript会导致内存泄漏吗?”-不会。子脚本会被收集,父脚本也会被收集。
root X parent <-> child