La investigación principal en este artículo es un intento de anular el método Finalize () en Java, y la implementación específica es la siguiente.
Código de prueba
paquete com.alio.gc;/** * Resultado de ejecución: * */public class FinalizeScapegc {public static finalizizeScapeGc instance = null; public void isalive () {System.out.println ("Sí, todavía estoy vivo"); } @Override Proteged void finalize () lanza lanzable {super.finalize (); System.out.println ("Método finalize ejecutado"); instancia = esto; } public static void main (string [] args) lanza interruptedException {install = new FinalizeScapeGC (); instancia = nulo; System.gc (); Thread.sleep (1000); instancia.isalive (); // Cuando el método finalizar no se reescribe, definitivamente se informará la instancia = NullPointerException; System.gc (); Thread.sleep (1000); instancia.isalive (); }}Resultados de la ejecución:
Método finalizar ejecutado
si, todavía estoy vivo
Excepción en el hilo "principal" java.lang.nullpointerexception
en com.alio.gc.FinalizeScapegC.Main (FinalizeScapegC.Java:29)
en Sun.Reflect.nativemethodaccessorImpl.invoke0 (método nativo)
en Sun.Reflect.nativemethodaccessorImpl.invoke (NativemethodaccessorImpl.java:62)
en Sun.Reflect.DelegatingMethodaccessorImpl.Invoke (delegación deMethodaccessorImpl.java:43)
en java.lang.reflect.method.invoke (método.java:498)
en com.intellij.rt.execution.application.appmain.main (appmain.java:134)
Primer ejecutar instancia = nulo; luego ejecute instance.isalive (); Cuando el método finalizar no se reescribe, definitivamente se informará una NullPointerException.
Sin embargo, el resultado de la ejecución real es un éxito en el escape y un fracaso. Esto se debe a que el método Finalize () de cualquier objeto solo será llamado automáticamente una vez por el sistema. Si el objeto enfrenta el próximo reciclaje, su método finalize () no se ejecutará nuevamente
Esta forma de salvar el objeto es extremadamente incierta. Se recomienda que no necesite usarlo y olvidar la existencia de este método.
Lo anterior se trata del código que cubre el código de ejemplo del método Finalize () en Java, espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!