奇怪的记忆行为

时间:2011-09-07 20:46:53

标签: javascript memory memory-management

我基本上有一个对象,我称之为两个函数,以及三个函数。

function func1()
    M.mfunc1( 'updateSomething' );
    // do some stuff
    M.mfunc2();
}

function func2 () {
  M.mfunc1 ( 'hitSomething' );
  // does something but line is stable
  M.mfunc2();
}

function func3 () {
  M.mfunc1 ( 'doesSoemthing' );
  //does nothing, but causes memory to grow
  M.mfunc2();
}

M.mfunc1 = function ( name ) {
  // code is all commented out
}

M.mfunc2 = function () {
  // code is all commented out
}
使用setTimeout在主循环上调用

func1 n。当在时间轴上使用Chromes的开发工具观看内存时,内存会在func3的调用时突然增长,但如果我注释掉M个来电,它会保持稳定。我试图评论M.mfunc1M.mfunc2中的所有内容,只是将其称为孤独,它会导致内存使用量增长。

现在可以有人向我解释一下吗?

更新:我的代码更像是它的真实内容。

更新2 :由于我提供的示例代码似乎不是问题,因此这里是指向所有代码的链接:http://test.startailpro.co.uk/breaking/

这些功能包括updateupdateDirectionhitBlockdoesBall_hitBlockMEMORY.deepMEMORY.rise

1 个答案:

答案 0 :(得分:0)

最后我做的是重写整个代码。我实际上设法在不使用对象的情况下编写整个事物,除了在加载时。我仍然不知道原始代码有什么问题,但我现在能够更好地理解内存使用的增长。

Memory being allocated

我建议您小心选择哪种框架。我在jQuery中发现事件会导致内存增长。由于您正在为事件生成接收​​对象和对象,因此这不是问题。虽然,我假设事件对象是本机的并且已经过优化,因此内存增长不是问题。再次注意框架。