Pregunta

He estado trabajando con Velocity.js y Vue.js y encontré una pérdida de memoria.Violín del problema:Puedes ver un ejemplo en este violín: 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);
});

Utilicé la función de línea de tiempo de Chrome y noté que la cantidad de nodos DOM nunca disminuye, incluso cuando fuerzo una recolección de basura.Comencé a sumergirme en el generador de perfiles del montón, pero está un poco por encima de mi cabeza.

cuando yo nosotros .animate() en lugar de .velocity(), los nodos DOM parecen recibir GC correctamente.

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

También parece que eliminar Vue también soluciona el problema.Ejemplo: http://jsfiddle.net/yV6Zr/1/.

¿Qué podría estar causando esta pérdida de memoria?

¿Fue útil?

Solución

Resuelto en la página de GitHub de speed.js:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top