Java - eliminar objetos

 
Vista:

eliminar objetos

Publicado por Alejandro (279 intervenciones) el 25/11/2006 00:15:02
Saludos compañeros, tuve que cambiar el codigo de mi aplicacion y lo estoy haciendo todo con clases en lugar de con metodos, y por lo tanto ahora me queda todo con new ... (), new ... () pero va todo demasiado lento comparado con antes, y me imagino que es porque esos objetos se acumulan en memoria sin destruirse. Como puedo eliminarlos ??? Por favor ayudadme o dadme alguna idea.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:eliminar objetos

Publicado por Kike (72 intervenciones) el 25/11/2006 01:25:06
Hola. Generalmente, los objetos que se colocan en la memoria permanecen cierto tiempo ahi hasta que son utilizados. Java cuenta con un m{etodo alterno, algo como un hilo, que se encarga de eliminar aquellos objetos que no son utilizados en cierto momento, este método es llamado "recolector de basura". Puedes hacer una llamada al recolector de basura con System.gc(); Sin embargo es llamado cuando la máquina virtual lo requiere. Me imagino que debe haber otra forma de poder realizarlo pero con System.gc() lo puedes hacer. Espero que te sirva. Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:eliminar objetos

Publicado por chuidiang (950 intervenciones) el 26/11/2006 05:31:14
Hola:

java elimina automáticamente un objeto cuando nadie referencia a él. Dicho de otra forma, si haces

public void metodo()
{
Clase a = new Clase();
...
}

Como Clase a es local al método, cuando se ejecuta el método, se crea a y cuando termina el método, java libera a.

Si es un atributo de una clase, para liberarlo hay que ponerlo a null. De esta forma ya no está accesible y java se encargará de liberarlo.

public class Clase
{
Clase2 a = new Clase2();;
public void metodo ()
{
...
a=null; //esto hará que el recolector lo libere
}
}

Si es una ventana (JFrame o JDialog), además de apuntar todas las variables a null, es necesario llamar al método dispose() para que el mismo gestor de ventanas de java deje dereferenciarlo.

De todas formas, en java todo son clases, así que no entiendo como habías hecho antes el código sin clases.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:eliminar objetos

Publicado por Alejandro (279 intervenciones) el 27/11/2006 00:05:26
Lo habia hecho con metodos, con pocas clases, y los metodos dentro de esas clases.

Por que puede ser que antes se ejecutase en un tiempo minimo, y ahora que es el mismo codigo pero con clases, haciendo new .. ()... vaya todo mucho mas lento ???

Por favor ayudadme. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar