我正在以下方式中使用事件监听器/处理程序:
我正在以下方式中使用事件监听器/处理程序:
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添加侦听器/处理程序不会导致任何额外的内存分配。
我是否遗漏了某些基本要素?任何见解将不胜感激。
mousemove
处理程序的操作,以帮助你理解为什么与调用它相关的内存没有被释放。如果它确实像所示那样为空,与调用相关的内存将立即有资格进行释放,并且 Chrome 在优化这类简单情况方面非常出色。我猜测你的处理程序可能会做一些(无意中)卡住事情的操作。 - T.J. Crowder