Es ist ein finalizerGuardian in der anoymous Klasse, warum dieser finalizerGuardian immer aufgerufen werden, wenn die Superklasse lief? Thx.Über den finalizerGuardian
Antwort
Es ist, weil SuperClass
Instanz nicht erreichbar ist, wenn System.gc()
aufgerufen wird. Guardian-Objekt finalisieren ist eine Instanzeigenschaft und muss daher finalisiert werden. Es gibt keine solche Entität wie "Klasse, die läuft".
Die main
Methode ist zwar in der Superklasse, aber es bedeutet nichts über ihre Instanzen.
finalizerGuardian ist eine Instanz (nicht statisch oder Klassenvariable), und da Sie den Verweis auf SubClass entfernt/null gemacht haben, wird auch das nicht referenzierte Instanzobjekt finalizerGuardian sofort erfasst.
Als Instanzobjekt ist es nur aktiv, bis die SubClass aktiv ist.
Auch wenn der finalizerGuardian eine anonyme Klasse ist, ist er dem GC bekannt. Wenn der GC also läuft, sucht er nach Objekten, die aus dem Speicher gelöscht werden können und ruft ihre finalize() - Methode auf.
Jedes Mal, wenn Sie eine Instanz Ihrer SuperClass haben, wird eine Instanz Ihres finalizerGuardian erstellt und steht somit für den GC zur Verfügung.
- 1. verwirren über den ParentNode
- 2. Über den variablen Bereich?
- 3. Über den KVO Referenzzähler
- 4. Über den Befehl egrep
- 5. Fragen über den Umzug Zuweisungsoperator
- 6. Quadrate über den Bildschirm bewegen
- 7. Über den MFC CFileDialog Problem
- 8. Über den Mustervergleichsalgorithmus in OCaml
- 9. Abgezogene Ergebnisse über den Datumsbereich
- 10. den gemeinsamen Wert über Partition
- 11. Überlappende Iteration über den Tensor
- 12. PostgreSQL Unterschied über den Zeitraum
- 13. AngularJs, über den Digest-Zyklus
- 14. IntelliJ Cursive s-form Dokumentation über den Mauszeiger über
- 15. Benachrichtigung über den Download von Apps über eine Anzeige?
- 16. Was sagt C++ 03 12.4/12 über den Aufruf eines Basisklassen-Destruktors explizit über den Zeiger?
- 17. KDB +/Q Zugriff auf den Root-Namespace über den Namespace
- 18. Wie verfolgen Sie den verzweigten Verlauf über den Befehl tf?
- 19. Wie macht man den Mauszeiger über den Kartenbereich?
- 20. API, um den Confluence-Seiteninhalt über den Seitennamen abzurufen?
- 21. Wie finde ich den Dateinamen einer Bibliothek über den Bibliotheksnamen?
- 22. Warum verwendet Linux den Hardware-Kontextwechsel nicht über den TSS?
- 23. Verhindern Sie den Mauszeiger über den aktiven Zustand
- 24. So verschieben Sie den UITextView-Korrekturvorschlag über den Text
- 25. Den öffentlichen Schlüssel der Baugruppe über den Code
- 26. ADF Rufen Sie den Vorgang manuell über den Code
- 27. Wie man den Vibrationsmodus über den Audiomanager prgrammatisch ändert
- 28. Zugriff auf den Andock-Container über den iOS-Simulator
- 29. SMTPCLIENT über den zweiten LAN-Port senden
- 30. Wie WsDualHttpBinding über den Callback-Kanal informiert?
Ich weiß es eine Instanz von finalizerGuardian erstellen, wenn diese Hauptmethode aufrufen, aber es nicht Superklassenobjekt erstellen, weil es nur ein Unterklasseobjekt erstellen, also warum dieser FinalizerGuardian aufgerufen wurde? – Carlos
Starten Sie einen Debugger und Sie werden sehen, dass der FinalizerGuardian wird instanziiert, wenn die SubClass erstellt wird. Das ist eines der Merkmale der Vererbung. – Frank