Question

J'ai travaillé avec Velocity.js et Vue.js et j'ai rencontré une fuite de mémoire.Violon du problème :Vous pouvez voir un exemple dans ce violon : 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);
});

J'ai utilisé la fonction de chronologie de Chrome et j'ai remarqué que le nombre de nœuds DOM ne diminue jamais, même lorsque je force un garbage collection.J'ai commencé à plonger dans le profileur de tas mais c'est un peu au-dessus de ma tête.

Quand je nous .animate() au lieu de .velocity(), les nœuds DOM semblent être correctement GCés.

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

Il semble également que la suppression de Vue résout également le problème.Exemple: http://jsfiddle.net/yV6Zr/1/.

Quelle pourrait être la cause de cette fuite de mémoire ?

Était-ce utile?

La solution

Résolu sur la page GitHub de Velocity.js :

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top