Pérdida de memoria de Javascript con Vue JS y Velocity JS
-
20-12-2019 - |
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?
Solución
Resuelto en la página de GitHub de speed.js:
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow