Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] eliminación de objetos

Estas en el tema de eliminación de objetos en el foro de Java en Foros del Web. Tengo: -clase_A -clase_B -clase_C en clase_A tengo: variable A bucle (que puede llegar a ser hasta infinito) switch random(0 o 1) case 0: clase_B objeto=new ...
  #1 (permalink)  
Antiguo 22/10/2014, 12:37
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 1 mes
Puntos: 31
eliminación de objetos

Tengo:
-clase_A
-clase_B
-clase_C

en clase_A tengo:

variable A

bucle (que puede llegar a ser hasta infinito)
switch random(0 o 1)
case 0: clase_B objeto=new clase_B();objeto.funciona(cambio variable A de clase_A);
case 1: clase_C objeto=new clase_C();objeto.funciona(cambio variable A de clase_A);

fin bucle.

una vez que el objeto de la clase_B termina con su método funciona() ya no me interesa más ese objeto y quiero que se borre, porque como el bucle puede llegar a ser infinito no quiero que vaya aumentando el uso de memoria con la creación de objetos y más y más objetos cuando ya no los voy a necesitar más.

El garbage collection los elimina al crear otro con el mismo nombre? Se pueden elminar a mano? Recomendaciones?
  #2 (permalink)  
Antiguo 22/10/2014, 14:07
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: eliminación de objetos

Buenas,

No se puede eliminar explicitamente de la memoria.

El objeto quedará disponible para ser recolectado de la memoria cuando ya no haya ninguna variable que le haga referencia. Esta "desreferenciacion" la puedes hacer tú expresamente, asignando la variable a null después de usarla, o bien se puede producir de forma automática cuando la variable sale de ámbito.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 22/10/2014, 14:30
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: eliminación de objetos

Hola:

Como comenta Profesor_Falken, no puedes eliminarlo de la memoria de forma explícita. Tal cual lo estás haciendo, el recolector de basura los irá recogiendo, puesto que la variable objeto que lo contiene se le asigna otro valor distinto en cada iteración.

De todas formas, para no andar jugando con la memoria de esa forma (crear objeto, usarlo, dejarlo al recolector de basura y vuelta a empezar), debes pensar si tiene sentido crear ese objeto y tirarlo tantas veces. Eso dependerá mucho de lo que haga ese método funciona().

Mira a ver si es posible una de estas opciones:
- Crear los dos objetos Clase_B y Clase_C una sola vez fuera del bucle, ahorrando hacer un new en cada iteración. ¿Se puede reutilizar el objeto llamando a funciona() varias veces. Cuando termine el bucle, apunta a null las variables donde guardas Clase_B y Clase_C.
- Segunda opción, mira a ver si ese funciona() puede ser static. Si es así, no necesitas hacer el new. Bastaría con Clase_B.funcina(...) o Clase_C.funciona(....)

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: clase, objetos
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 06:44.