JavaScript对象分配问题

时间:2013-04-08 07:55:16

标签: javascript html ajax performance

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

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

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

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

此外,如果您可以包含对描述JavaScript内存管理最佳实践的书籍或文章的引用?

2 个答案:

答案 0 :(得分:0)

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

在我看来,我肯定会避免做你所描述的,因为它的不良做法。实际上,如果它在一个不错的JS引擎中导致内存泄漏,我会感到惊讶(无论是。

答案 1 :(得分:0)

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

您可以在https://developer.mozilla.org/en-US/docs/JavaScript/Memory_Management

上阅读有关JavaScript内存管理的信息