La recherche principale de cet article est une tentative de remplacer la méthode finaliser () en Java, et l'implémentation spécifique est la suivante.
Code de test
package com.alio.gc; / ** * Résultat d'exécution: * * / classe publique finalizeEscapeGC {public static finalizeScapeGC instance = null; public void isalive () {System.out.println ("Oui, je suis toujours en vie"); } @Override Protected void finalize () lance Throwsable {super.Finalize (); System.out.println ("Finaliser la méthode exécutée"); instance = this; } public static void main (String [] args) lève InterruptedException {instance = new FinalizeScapeGC (); instance = null; System.gc (); Thread.Sleep (1000); instance.isalive (); // Lorsque la méthode finalisée n'est pas réécrite, l'instance = nullpointerException sera certainement rapportée; System.gc (); Thread.Sleep (1000); instance.isalive (); }}Résultats de l'exécution:
Finaliser la méthode exécutée
Oui, je suis toujours en vie
Exception dans Thread "Main" java.lang.nullpointerException
sur com.alio.gc.finalalizeScapegc.main (finalizeEscapegc.java:29)
à Sun.Reflect.NativeMethodAccessOrimpl.invoke0 (méthode native)
à Sun.Reflect.NativeMethodAccessOrimpl.invoke (NativeMethodAccessOrimpl.java:62)
à Sun.Reflect.DelegatingMethodAccessOrimpl.invoke (délégation deMethodAccessOrimpl.java:43)
sur java.lang.reflect.method.invoke (méthode.java:498)
sur com.intellij.rt.execution.application.appmain.main (appmain.java:134)
Exécuter d'abord instance = null; ensuite exécuter instance.isalive (); Lorsque la méthode Finalise n'est pas réécrite, une nulpointerException sera certainement rapportée.
Cependant, le résultat d'exécution réel est un succès dans l'évasion et un échec. En effet, la méthode finaliser () de tout objet ne sera automatiquement appelée qu'une seule fois par le système. Si l'objet fait face au prochain recyclage, sa méthode finaliser () ne sera plus exécutée
Cette façon de sauver l'objet est extrêmement incertaine. Il est recommandé de ne pas avoir besoin de l'utiliser et d'oublier l'existence de cette méthode.
Ce qui précède concerne le code couvrant l'exemple de méthode finaliser () en Java, j'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!