使用Vue JS和Velocity JS的Javascript内存泄漏

时间:2014-07-28 20:54:48

标签: javascript jquery vue.js velocity.js

我一直在使用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/

什么可能导致此内存泄漏?

1 个答案:

答案 0 :(得分:2)

已解决velocity.js GitHub页面:

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