Foros del Web » Programando para Internet » Javascript »

Garbage Collector en javascript

Estas en el tema de Garbage Collector en javascript en el foro de Javascript en Foros del Web. Hola! Me gustaria saber si existe algun garbage collector para objetos javascript y HTML para el internet explorer. Si no existe, existe alguna forma de ...
  #1 (permalink)  
Antiguo 15/12/2006, 10:31
 
Fecha de Ingreso: diciembre-2006
Mensajes: 2
Antigüedad: 17 años, 4 meses
Puntos: 0
Garbage Collector en javascript

Hola!

Me gustaria saber si existe algun garbage collector para objetos javascript y HTML para el internet explorer.

Si no existe, existe alguna forma de lanzarlo manualmente???

Saludos!
  #2 (permalink)  
Antiguo 15/12/2006, 12:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Garbage Collector en javascript

Hola DaleCooper, bienvenido a los foros :

¿Qué es y para que quieres un "Garbage Collector" ?...

Me suena a que se trata de un recolector de basura como el sistema java implementa para programas java... pero mejor será que te expliques... ten en cuenta que puede no ser necesario en un lenguaje implementado...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 18/12/2006, 02:21
 
Fecha de Ingreso: diciembre-2006
Mensajes: 2
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Garbage Collector en javascript

Hola y Gracias por la bienvenida.

El problema es que tengo una aplicación en la que pasa una cosa curiosa.

La aplicacion está mostrando continuamente información sobre unos objetos HTML y Javascript que se generan de manera dinámica, y el consumo de memoria va creciendo de una manera constante.

Llega un punto en el que el sistema llega a consumir (por ejemplo) 80 Mb.

Si en este momento minimizas la ventana del cliente (en este caso internet explorer)el consumo de memoria desciende hasta 40 Mb (que representa la situación inicial del sistema).

A partir de este punto el consumo crece constantemente(de una manera lenta pero bueno) hasta que minimizes la ventana.

A mi me daba la impresion de que, cuando minimizabas, limpiaba de memoria los objetos HTML y jscript que no se usaban , y por eso liberaba recursos.

Al ser una aplicacion desatendida de cara al usuario, estaba buscando una manera de que limpiara de memoria los objetos que no se iban usar, pero me da la impresion de que va a ser complicado.

Un saludo y gracias por la respuesta.

  #4 (permalink)  
Antiguo 18/12/2006, 04:23
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Garbage Collector en javascript

Hola:

Los objetos que en mi opinión consumen más recursos son los temporizados (setTimeout/setInterval) que se pueden anular con crearTimeout/clearInterval o en el primero de los casos condicionando el temporizador, por ejemplo con el foco...
if (window.focus) setTimeout(...) ... (La verdad es que no sé si respondería bien algo así)

Otros elementos que consumen mucho son algunos objetos embebidos como flashes, películas

El problema sería que produjese respuestas no deseadas...

Los elementos normales html se pueden eliminar con removeChild, pero dudo que mejore tu problema.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 31/03/2009, 07:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Respuesta: Garbage Collector en javascript

Hola

Tengo el mismo problema tal y como decía caricatos con objetos Flash. Utilizo la librería SWFobject que tiene un método removeSWF() pero que falla (a pesar de asegurar lo contrario en su versión 2.1).

Como el usuario DaleCooper pienso que es posible que minimizando se realice la liberación de memoria pendiente por el colector de basura y quisiera, si fuera posible poder controlar ese mandato.
  #6 (permalink)  
Antiguo 31/03/2009, 08:04
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Garbage Collector en javascript

Sólo es posible llamar al recolector en explorer con el método CollectGarbage();
Pero para eliminar el flash bastaría con vaciar el innerHTML de la capa que lo contiene:
Código:
document.getElementById('contenedorFlash').innerHTML='';
  #7 (permalink)  
Antiguo 31/03/2009, 08:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Respuesta: Garbage Collector en javascript

gracias por tu respuesta Panino5001.

Existe un problema a esa solución y es que cuando se carga la gráfica por primera vez, la capa contenedora se convierte en un object y si escribes:

document.getElementById('contenedorFlash').innerHT ML='';

despues no puede volverse a utilizar para recargar otra gráfica ya que no hay "conenedorFlash".
  #8 (permalink)  
Antiguo 31/03/2009, 09:01
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Garbage Collector en javascript

Lo que te sugerí es vaciar el elemento contenedor (no el objeto flash sino la capa donde lo incrustás, es decir, su parentNode)
  #9 (permalink)  
Antiguo 31/03/2009, 09:18
 
Fecha de Ingreso: marzo-2009
Mensajes: 3
Antigüedad: 15 años
Puntos: 0
Respuesta: Garbage Collector en javascript

Gracias por la rapidez.

Lo he probado y no funciona y puede ser que esa capa contenedora (elemento DIV) cuando se carga se convierte en un object (según el firebug de mozilla) y al recargar una nueva película flash despues de haber borrado el hijo casca.
  #10 (permalink)  
Antiguo 31/03/2009, 09:22
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Garbage Collector en javascript

Depende de cómo incrustes. Si la incrustación la hacés vía innerHTML, no pasa. Si usás algún script para incrustar, es posible que haga esa transformación.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:27.