Finalizar un objeto en Java

04/Mar/2011 Java , , , 5 Comentarios

Cuando un objeto ya no está en uso por el programa es eliminado de memoria por el garbage collector. Si bien, antes de ser eliminado de la memoria, el garbage collector finaliza el objeto Java. Es decir, ejecuta el método finalize().

Y es que el método finalize() nos permite ejecutar las acciones pertinentes sobre el objeto antes de que sea totalmente eliminado. Por ejemplo, podemos pensar en casos como gestión de ficheros o bases de datos, en los cuales podremos cerrar las conexiones sobre dichos recursos.

La definición del método finalize() tiene la siguiente estructura:

  1. protected void finalize() throws Throwable{
  2. System.out.println("Finalizando el Objeto");
  3. super.finalize();
  4. }

Al incluir el método finalize() sobre un objeto estaremos reescribiendo el método finalize() por defecto que viene en la clase Object. Mediante la sentencia super.finalize() estamos ejecutando el método finalize() de las clases padre.

Aunque los métodos finalize() se ejecutarán cuando pase el garbage collector, existe la posibilidad de sugerir a la máquina virtual java (jvm) que se ejecute el finalize de los métodos. Esto lo conseguiremos ejecutando el método runFinalization() de la clase System.

El método System.runFinalization() solo es una sugerencia. No implica una ejecución directa de los métodos finalize().

El código de ejecución del System.runFinalization() sería el siguiente:

  1. public static void main(String[] args) {
  2. FinalizarUnObjeto fuo = new FinalizarUnObjeto();
  3. System.out.println(fuo.toString());
  4. fuo = null;
  5. System.runFinalization();
  6. }

Vídeos sobre Java


5 comentarios en “Finalizar un objeto en Java”

Víctor Cuervo

cata

Hola amigos,
Me gustaría saber como cerrar los flujos de salida y entrada de bytes sin utilizar un try catch finally, sino haciendo algo como esto:

public void leerArchivo(File file) throws FileNotFoundException, IOException{

}finally{

fileimputstream.close();

}

Esta mal hecho pero es para que os hagais una idea
Gracias amigos!!

Víctor Cuervo

Fernando Pérez Gil

Hola a todos, en primer lugar me gustaria agradecer esta magnífica pagina que me ayuda a estudiar.
Me gustaria haber si me podrias ayudar.
La duda es la siguiente tengo una GUI de menu, la cual llama a objetos GUI los cuales tienen un boton de retroceso.
La pregunta es como puedo cerrar el objeto gui creado cuando le doy al retroceso os subo el codigo que introduje en el ActionPerformed
if(e.getActionCommand().equals(“Retroceso”))
{
MenuGuis MG=new MenuGuis();//llamo al objeto principal el menu
finalize();//intento que cierre la clase que acabo de abrir para evitar que se acumule en la ram
}else

No se si me habre explicado bien, espero que si un abrazo espero su respuesta.
muchas gracias por adelantado.

Víctor Cuervo

Cristian Manuel

public static void main(String[] args){

int num=7455;
int cont=0;

while(num>0){
cont=cont+(num%10);
num=num/10;
}
System.out.println(“la suma es “+cont);

Víctor Cuervo

Víctor Cuervo

@Francisco,

Puedes encontrar el tema de la suma en
http://lineadecodigo.com/java/sumar-dos-numeros-con-java/

Con respecto a ponerlo en texto, estamos trabajando en ello. Esperamos poderlo tener pronto.

Víctor Cuervo

Francisco

Hola amigos, espero que muestren el código fuente en java sobre como sumar un numero grande entre si y muestre la suma ya sea en numeros o caracteres,
por ejemplo: Digite un Numero: 745
System.out(“La suma es: quince”);
System.out(“La suma es: 15”);

Espero me ayuden, muchas gracias.

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*