2014-07-28 12 views
0

Я работал с Velocity.js и Vue.js и сталкивался с утечкой памяти. Fiddle вопроса: Вы можете увидеть пример в этой скрипке: http://jsfiddle.net/hRAn7/3/Ошибка утечки Javascript с Vue JS и скоростью JS

$(function() { 

    var ExtVue = Vue.extend({ 
     'template': '#template', 
     'replace': true 
    }); 

    var currVue; 

    setInterval(function() { 
     var nextVue = new ExtVue(); 
     nextVue.$appendTo($('body').get(0)); 

     $(nextVue.$el).velocity({ 
      'left': '0' 
     }, 0, callback); 

     function callback() { 
      if (currVue) 
       currVue.$destroy(); 
      currVue = nextVue; 
     } 

    }, 10); 
}); 

Я использовал функцию временной шкалы Chrome и заметил, что число DOM никогда узлы не уменьшается, даже когда я заставляю сбор мусора. Я начал погружаться в профилировщик кучи, но это немного над моей головой.

Когда я .animate() вместо .velocity(), узлы DOM выглядят правильно.

$(nextVue.$el).animate({ 
    'left': '0' 
}, 0, callback); 

Также кажется, что удаление Vue также устраняет проблему. Пример: http://jsfiddle.net/yV6Zr/1/.

Что может вызвать утечку памяти?

+0

Это будет очень трудно исследовать источник утечек памяти с уменьшенными библиотеками –

+0

Я обновил скрипку включить unminified версию скорости. – jws305

ответ