Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript对象分配问题_Javascript_Html_Ajax_Performance - Fatal编程技术网

JavaScript对象分配问题

JavaScript对象分配问题,javascript,html,ajax,performance,Javascript,Html,Ajax,Performance,我不是JavaScript专业人士,所以我的问题可能看起来很可笑。假设我有以下HTML块: <div> <script type="text/javascript"> var variable_2 = new SomeObject(); </script> </div> var变量_2=新的SomeObject(); 这显然是在堆上为SomeObject实例分配内存,变量_2驻留在全局上下文中 我的问题

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

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

var变量_2=新的SomeObject();
这显然是在堆上为SomeObject实例分配内存,变量_2驻留在全局上下文中

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

此外,如果您可以引用一本描述JavaScript内存管理最佳实践的书或文章,请查看JS垃圾收集器或获取更多信息。但是请注意,JS引擎之间的确切行为可能有细微的不同。你可能想在网上发布一个问题,以获得详细的技术解释


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

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


您可以在

上阅读有关JavaScript内存管理的内容,不鼓励索要书籍和参考资料……仅供参考