内存泄漏和奇怪的堆分配分析

时间:2018-03-29 14:22:00

标签: javascript jquery debugging memory-leaks

我制作了一个简单的幻灯片脚本,我注意到一段时间后内存开始泄漏。这是非常简单的脚本,所以不应该有内存泄漏。



<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
var current_index = 0;
var max_index = 5;

function delaySlide() {

	   $("#slider").find("[data-index='" + current_index + "']").toggleClass("transparent");
		current_index++;

	   if( current_index >= max_index )
	  	current_index = 0;

	    $("#slider").find("[data-index='" + current_index + "']").toggleClass("transparent");
}

window.setInterval(function(){delaySlide(); }, 1000 );
</script>
&#13;
&#13;
&#13;

当我解雇Chrome的任务管理器( Shift + Esc )时,打开JavaScript内存标签(右键单击列表标题) ,我可以看到JS使用的内存不断增加。当然,经过一段时间后,GC会启动,清理一些内存,但不会所有内存。几个小时后,我可以看到有一些记忆丧失。

所以我开始从chrome中记录内存分配时间线,看​​看内存的去向。一切看起来都很完美!分配内存,然后在不再需要时立即释放。

让我感到困惑的是,当我开始录制分配时,当我查看Chrome的任务管理器时,我惊讶于内存不再增加。

一旦我停止记录堆配置文件,JavaScript内存(以及整个所有内存)就会再次开始增加。

那么,这里发生了什么?我是否,或者没有内存泄漏?为什么这种奇怪的铬行为?

0 个答案:

没有答案