我一直在使用Velocity.js和Vue.js并遇到内存泄漏。这个问题的小提琴:你可以在这个小提琴中看到一个例子:http://jsfiddle.net/hRAn7/3/
$(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节点似乎正确地获得了GC。
$(nextVue.$el).animate({
'left': '0'
}, 0, callback);
似乎删除Vue也解决了这个问题。示例:http://jsfiddle.net/yV6Zr/1/。
什么可能导致此内存泄漏?