Wie behalte ich den Überblick, wenn die Klasse in jvm geladen und zerstört wird? Gibt es eine Callback-Methode, die vom jvm bereitgestellt wird?Wie verfolgen, wenn die Klasse in jvm geladen und zerstört wird?
Antwort
Sie können den statischen Ladevorgang verwenden, um das Laden von Klassen zu erkennen, aber das Entladen von Klassen nicht. In Java werden alle Klassen, die über den Systemklassenlader geladen werden, niemals entladen und alle Klassen, die über andere Klassenlader geladen werden, werden nur entladen, wenn der Klassenlader entladen wird.
static{
//execute when the class will be loaded
}
Sie hinzufügen können Java sehen entscheidet sich, zu welcher Klasse geladen wird über:
java -verbose:class
Über zerstört Klasse, bin ich nicht sicher.
Möchten Sie diese Informationen in Ihrer Anwendung haben oder wollen Sie das nur von außen analysieren? In letzterem Fall können Sie vielleicht VisualVM dafür verwenden. Vielleicht hängt Ihre Frage mit dieser Frage zusammen: Loaded classes in VisualVM.
Sie können die command line option-verbose:class
Ihrem Java-Prozess hinzufügen, dies wird Informationen über jede geladene Klasse anzeigen.
Sie können die Erstellung von Klassen im statischen Konstruktor verfolgen. Und für mich kann die Zerstörung nicht verfolgt werden. Klassen werden nur entladen, wenn gc den Klassenlader sammelt, der zum Laden der Klassen verwendet wurde.
könnten Sie auch lesen interessieren: another question on classloaders at StackOverflow
Wenn bei der Verwendung von JRockit JVM ok sind, können Sie die Verwendung der APIs unten machen, die Sie Methoden Rückruf geben, wenn eine Klasse geladen und Klasse entladen wird.
Werfen Sie einen Blick auf JVM Klasse, von denen wir die getClassLibrary()
Methode verwenden sollen.
Auf dem Classlibrary Objekt können wir Zuhörer registrieren Veranstaltungen für Classloading, die die Klassennamen usw.
Wenn Sie mit einer Sun/Oracle JVM gibt, können Sie die TraceClassLoading
und TraceClassUnloading
Optionen. Verwenden Sie die folgenden, um zu sehen, welche Möglichkeiten Ihre JVM unterstützt:
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version
Wenn diese Optionen unterstützt werden, führen Sie Ihre Java-Anwendung -XX:+TraceClassLoading -XX:+TraceClassUnloading
verwenden. Sie sollten Nachrichten wie sehen:
[Loaded ... from ...]
[Unloading class ...]
- 1. Java: Wie wird die als Byte [] gespeicherte Klasse in die JVM geladen?
- 2. Warum wird die PHP-Sitzung zerstört, wenn die Seite mehrere Male geladen wird?
- 3. zerstört Klasse in anderer Klasse
- 4. Wie wird die CKEditor-Instanz ordnungsgemäß zerstört?
- 5. Jquery wird ausgeführt, wenn die Seite geladen wird und wenn die Schaltfläche geklickt wird
- 6. UIView - Wie wird benachrichtigt, wenn die Ansicht geladen wird?
- 7. Lang andauernde Aufgabe, wenn Aktivität zerstört wird
- 8. Alarm einstellen, wenn Aktivität zerstört wird
- 9. Java: Herausfinden, warum * eine Klasse geladen wird
- 10. Wie und wann wird eine @ViewScoped-Bean in JSF zerstört?
- 11. Wie entferne ich withEndAction, wenn die Aktivität die Ansicht zerstört?
- 12. Wann wird die Stateful Session-Bean zerstört?
- 13. AsyncTask wird immer ausgeführt, selbst wenn App zerstört wird?
- 14. Wie wird eine Teilansicht geladen, wenn die Ansicht zuerst geladen wird?
- 15. Wie werden alle Daten geladen, wenn der Begrüßungsbildschirm geladen wird?
- 16. Was passiert mit einer AsyncTask, wenn die Startaktivität gestoppt/zerstört wird, während sie noch ausgeführt wird?
- 17. Android-Fragment wird zerstört und empfängt onActivityResult
- 18. Tool, um zu verfolgen, welche Methode gerade von JVM in einer Anwendung ausgeführt wird?
- 19. Wie wird die Abhängigkeit in Meteor geladen?
- 20. wie die Grundeinstellung in angularjs geladen wird
- 21. Wie ajax auszuführen, wenn Seite geladen wird
- 22. Wird jedes Bild in einer CSS-Datei geladen, wenn die Datei geladen wird?
- 23. Update, wenn MathML geladen wird
- 24. Lädt die Java JVM ein ganzes Glas oder Ohr, wenn nur eine Klasse davon verwendet wird?
- 25. Wie wird neu geladen, wenn sich die Ausrichtung ändert? (Bxslider)
- 26. Wissen, wenn eine Ansicht in UIView Lebenszyklus zerstört wird
- 27. onDeviceReady() wird nicht aufgerufen, wenn die Seite neu geladen wird?
- 28. $ routeChangeStart wird zweimal aufgerufen, wenn die Anmeldeseite geladen wird
- 29. C++: Dynamischen Speicher freigeben, wenn das abgeleitete Klassenobjekt zerstört wird
- 30. Wie wird die dauerhafte JVM-Funktion in Cake implementiert?
Sie fragen zwei Fragen in einem hier. Was genau versuchen Sie zu lernen oder zu erreichen? Sobald Sie das herausgefunden haben, akzeptieren Sie die Antwort, die Ihnen dabei am meisten geholfen hat. – Frans