我制作了一个简单的幻灯片脚本,我注意到一段时间后内存开始泄漏。这是非常简单的脚本,所以不应该有内存泄漏。
<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;
当我解雇Chrome的任务管理器( Shift + Esc )时,打开JavaScript内存标签(右键单击列表标题) ,我可以看到JS使用的内存不断增加。当然,经过一段时间后,GC会启动,清理一些内存,但不会所有内存。几个小时后,我可以看到有一些记忆丧失。
所以我开始从chrome中记录内存分配时间线,看看内存的去向。一切看起来都很完美!分配内存,然后在不再需要时立即释放。
让我感到困惑的是,当我开始录制分配时,当我查看Chrome的任务管理器时,我惊讶于内存不再增加。
一旦我停止记录堆配置文件,JavaScript内存(以及整个所有内存)就会再次开始增加。
那么,这里发生了什么?我是否,或者没有内存泄漏?为什么这种奇怪的铬行为?