【问题标题】:JavaScript Object allocation issue [duplicate]JavaScript对象分配问题[重复]
【发布时间】:2013-04-08 07:55:16
【问题描述】:

我不是 JavaScript 专业人士,所以我的问题可能看起来很荒谬。假设我有以下 HTML 块:

<div>
     <script type="text/javascript">
         var variable_2  = new SomeObject();
     </script>
</div>

这清楚地在堆上为 SomeObject 实例分配内存,而 variable_2 驻留在全局上下文中。

我的问题是:如果我使用 AJAX 再次生成了之前的 HTML 块,那么我将让 variable_2 在全局上下文中引用新分配的 SomeObject 实例,对吗?但是,之前分配的实例会发生什么,是垃圾回收还是内存泄漏?

此外,您是否可以引用描述 JavaScript 内存管理最佳实践的书籍或文章?

【问题讨论】:

  • 不鼓励索取书籍和参考资料...仅供参考

标签: javascript html ajax performance


【解决方案1】:

查看this postthis post 了解有关 JS 垃圾收集器的更多信息。但是请注意,JS 引擎之间的确切行为可能略有不同。您可能想在例如上发布问题。 V8 forum 以获得详细的技术说明。

在我看来,我当然会避免做你描述的事情,因为它是不好的做法。实际上,如果它在一个像样的 JS 引擎中导致内存泄漏,我会感到惊讶(无论是。

【讨论】:

    【解决方案2】:

    当一个对象变得不可访问时,它将被垃圾回收。旧版本的 Internet Explorer(版本 6 和 7)存在一个问题,即相互引用但无法访问的对象不会被垃圾收集,从而导致内存泄漏。但是,这与您的示例无关。在您的示例中,一旦不再引用第一个对象(即,当您重新分配变量时),该对象将变得无法访问并且将被垃圾收集。

    您可以在 https://developer.mozilla.org/en-US/docs/JavaScript/Memory_Management 阅读有关 JavaScript 内存管理的信息

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 2020-02-21
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      相关资源
      最近更新 更多