Vue JS和Velocity JS的Javascript内存泄漏



我一直在使用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节点似乎得到了正确的GCed。

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

似乎删除Vue也解决了这个问题。例如:http://jsfiddle.net/yV6Zr/1/.

什么可能导致内存泄漏?

在velocity.js GitHub页面解析:

https://github.com/julianshapiro/velocity/issues/300

最新更新