我一直在使用 Velocity.js 和 Vue.js 并遇到内存泄漏。问题的 fiddle :您可以在这个 fiddle 中看到一个示例: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/ .
什么可能导致内存泄漏?
最佳答案
已在velocity.js GitHub 页面上解决:
关于Vue JS 和 Velocity JS 的 Javascript 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25004190/