backbone js – Incremento del uso de memoria de la aplicación

febrero 27, 2014

chrome memory profiler

chrome memory profiler

Después de tener una aplicación web abierta por un tiempo prolongado, empecé a notar que esta incrementaba mucho el uso de memoria. Este problema comenzó a presentarse cuando introduje un ‘timer’ para cambiar de vistas cada cierto tiempo. Al parecer no se estaba liberando la memoria en algún lado.
Crear y desplegar vistas en backbone es algo aparentemente sencillo, pero –como ya fue analizado– realmente no lo es.

Al principio recreaba las vistas de la siguiente manera

app.Router = Backbone.Router.extend({
    routes: {
        "": "audiencias",
        "audiencias": "audiencias",
        "screensaver": "screensaver"
    },
    initialize: function(){
        this.$content = $('#content')
    },

audiencias: function(){
    app.views.audiencias = new app.views.Audiencias({model: new app.models.AudienciaCollection()})
    this.$content.html(app.views.audiencias.render().el)
},

screensaver: function(){
    app.views.screensaver = new app.views.Screensaver()
    this.$content.html(app.views.screensaver.render().el)
}
})

Para evitar recrearlas y sólo hacer un ‘render’ cada que cambiaba de vista, lo modifiqué de la siguiente manera y la fuga de memoria ya no se presentó

app.Router = Backbone.Router.extend({
    routes: {
        "": "audiencias",
        "audiencias": "audiencias",
        "screensaver": "screensaver"
    },

initialize: function(){
    this.$content = $('#content')
    app.views.audiencias = new app.views.Audiencias({model: new app.models.AudienciaCollection()})
    app.views.screensaver = new app.views.Screensaver()
},

audiencias: function(){
    app.views.audiencias.setElement(this.$content).render()
},

screensaver: function(){

    app.views.screensaver.setElement(this.$content).render()
}
})

Fuentes:
http://ianstormtaylor.com/rendering-views-in-backbonejs-isnt-always-simple/
http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: