Javascript mousemove空事件处理程序泄漏内存?

时间:2012-11-09 15:26:51

标签: javascript memory-leaks event-handling addeventlistener event-listener

我正在以下列方式处理事件侦听器/处理程序:

    var _builder_canvas = document.getElementById("Builder");

    mouseMove = function() {
    }

    initBuilder = function( ) {
         // Add mouse listener events
         _builder_canvas.addEventListener( 'mousemove', mouseMove, true);
    }

使用主文档的onload处理程序调用'initBuilder'。

即使上面有一个空函数,当我在Chrome(23.0.1271.64)或FF(16.0.2)中运行此代码时,每次鼠标移动时都会分配一个永不释放的内存。

我知道你总是需要删除事件监听器以避免内存泄漏,但是当它是mousemove处理程序时如何做到这一点?处理程序需要在页面打开的整个时间内处于活动状态。

我还注意到,以类似的方式为mouseup或mousedown添加一个监听器/处理程序不会导致任何额外的内存分配。

我错过了一些基本的东西吗?任何见解都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果使用devtools记录内存使用量>时间轴,你会看到事件被触发后内存被释放。