He investigado bastante sobre esto, pero sobre todo reuniendo otras preguntas, lo que aún deja dudas. En una aplicación que no actualiza la página del navegador en ningún momento y puede vivir durante bastante tiempo (horas) sin cerrar (suponiendo que refrescar una página o navegar a otra reiniciaría el código js), ¿cuál es la mejor manera de garantizar que los objetos estén liberado y que no hay pérdida de memoria.Objetos de la vida de JavaScript y fugas de memoria
Estos son los escenarios específicos me preocupan:
Todo el código de abajo se encuentra dentro de un patrón módulo de revelador.
mycode = function(){}()
variables dentro de las funciones, estoy seguro de que éste es recogido por el GC bien
function(){ var h = "ss";}
las variables dentro del módulo, si g = null cuando ya no es necesario?
var g;
function(){ g = "dd";}
Y, por último, la vida de un jqXHR: ¿se limpia después de que vuelve? ¿Debería establecerse en nulo en todos los casos como precaución ya sea que se mantenga dentro de una función o módulo?
Si hace esto, es que x limpiado por el GC después de que vuelve ?:
function(){
var x = $.get();
x.done = ...;
x.fail = ...;
}
¿Qué tal cuando se hace esto, será también ser limpiado después de x retornos ?:
var x;
function(){
x = $.get();
x.done = ...;
x.fail = ...;
}
Por último, ¿hay alguna manera de limpiar todas las variables y reiniciar un módulo sin reiniciar el navegador?
Si está pensando en pérdidas de memoria, no debe pensar en las variables. Piense en los objetos y referencias y las implicaciones de accesibilidad que tiene este último para el primero. – delnan
Sí, es solo que pienso en todo en js como una variable, pero entiendo tu punto. Gracias. –