3

我正在通过以下方式使用事件侦听器/处理程序:

    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 添加侦听器/处理程序不会导致任何额外的内存分配。

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

4

1 回答 1

0

如果您使用 devtools > 时间线记录内存使用情况,您会看到在触发事件后内存已被很好地释放。

于 2012-11-09T16:19:23.853 回答