Я работал с 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/.
Что может вызвать утечку памяти?
Это будет очень трудно исследовать источник утечек памяти с уменьшенными библиотеками –
Я обновил скрипку включить unminified версию скорости. – jws305