A pesquisa principal deste artigo é uma tentativa de substituir o método Finalize () em Java, e a implementação específica é a seguinte.
Código de teste
pacote com.alio.gc;/** * Resultado da execução: * */public class FinalizeESCAPEGC {public static finalizeescapeGC instância = null; public void isalive () {System.out.println ("Sim, eu ainda estou vivo"); } @Override Protected void finalize () lança arremesso {super.finalize (); System.out.println ("Método Finalize executado"); instância = this; } public static void main (string [] args) lança interruptedException {instance = new FinalmenteeScapeGC (); instância = null; System.gc (); Thread.sleep (1000); instance.isalive (); // Quando o método Finalize não é reescrita, o instance = nullPointerException será definitivamente relatado; System.gc (); Thread.sleep (1000); instance.isalive (); }}Resultados da execução:
Finalize o método executado
Sim, ainda estou vivo
Exceção no thread "Main" java.lang.nullpointerException
em com.alio.gc.finalizeescapegc.main (finalizeescapegc.java:29)
em Sun.reflect.nativemethodaccessorimpl.invoke0 (método nativo)
em Sun.reflelect.nativemethodaccessorimpl.invoke (nativemethodaccessorimpl.java:62)
em Sun.reflect.DelegatingMethodAccessorimpl.invoke (DelegatingMethodAccessorimpl.java:43)
em java.lang.reflect.method.invoke (métod.java:498)
em com.intellij.rt.execution.application.appmain.main (appmain.java:134)
Primeira Execute Instância = NULL; então execute a instância.isalive (); Quando o método Finalize não for reescrita, uma NullPointerException será definitivamente relatada.
No entanto, o resultado real da execução é um sucesso na fuga e um fracasso. Isso ocorre porque o método finalize () de qualquer objeto será chamado apenas automaticamente uma vez pelo sistema. Se o objeto enfrentar a próxima reciclagem, seu método finalize () não será executado novamente
Essa maneira de salvar o objeto é extremamente incerta. Recomenda -se que você não precise usá -lo e esquecer a existência desse método.
O exposto acima é tudo sobre o código que cobre o código de exemplo Finalize () em Java, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!