This question already has answers here:
When are JavaScript objects destroyed?
                                
                                    (6个答案)
                                
                        
                6年前关闭。
            
        

我不是JavaScript专业人员,所以我的问题似乎很荒谬。假设我有以下HTML块:

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


显然,这会为SomeObject实例在堆上分配内存,而variable_2驻留在全局上下文中。

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

另外,您是否可以参考描述JavaScript内存管理最佳实践的书或文章?

最佳答案

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

我认为,我肯定会避免做您所描述的事情,因为这是不好的做法。实际上,如果它引起了像样的JS引擎中的内存泄漏,我会感到惊讶(无论是哪个。

10-07 12:47
查看更多