Pergunta

Tenho trabalhado com Velocity.js e Vue.js e tive um vazamento de memória.Violino do problema:Você pode ver um exemplo neste violino: 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);
});

Usei a função de linha do tempo do Chrome e percebi que o número de nós DOM nunca diminui, mesmo quando forço uma coleta de lixo.Comecei a mergulhar no heap profiler, mas está um pouco além da minha cabeça.

Quando eu nós .animate() em vez de .velocity(), os nós DOM parecem ter obtido o GCed corretamente.

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

Parece também que a remoção do Vue também resolve o problema.Exemplo: http://jsfiddle.net/yV6Zr/1/.

O que poderia estar causando esse vazamento de memória?

Foi útil?

Solução

Resolvido na página do GitHub do speed.js:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top