


Java-Interviewfragen, zusammengefasst aus langjähriger Entwicklungserfahrung – (5)
1. Beschreiben Sie das Prinzip des JVM-Ladens von Klassendateien Mechanismus?
(Weitere Empfehlungen zu Interviewfragen: Häufige Java-Interviewfragen )
Laden: Klassendateien suchen und importieren;
Überprüfen: Die Richtigkeit der geladenen Klassendateidaten;
Vorbereitung: Speicherplatz für statische Variablen der Klasse zuweisen;
Parsen: Symbolreferenzen in direkte Referenzen umwandeln (dieser Schritt ist optional)
Initialisierung: Statische Variablen und statische Codeblöcke initialisieren und die Ausführung starten, wenn das Programm statische Mitglieder der Klasse aufruft, also die statische Methode main() werden zur Eingabemethode eines allgemeinen Programms. Auch der Klassenkonstruktor löst diese Aktion aus.
2. Wird es in Java zu Speicherlecks kommen?
Speicherverlust bedeutet, dass ein Objekt oder eine Variable, die vom Programm nicht mehr verwendet wird, den Speicher belegt. Das Szenario eines Speicherverlusts in Java besteht für Laien darin, dass der Programmierer möglicherweise einen Speicherverlust erstellt Objekt, dieses Objekt wird in Zukunft nicht mehr verwendet, aber auf dieses Objekt wird immer verwiesen, das heißt, dieses Objekt ist nutzlos, kann aber nicht vom Garbage Collector recycelt werden. Dies ist ein Speicherverlust in Java.
(Empfohlene verwandte Tutorials: Java-Einführungs-Tutorial)
Wenn Die Methode eines Instanzobjekts einer äußeren Klasse gibt ein Instanzobjekt einer inneren Klasse zurück, auch wenn das Instanzobjekt der äußeren Klasse nicht mehr verwendet wird In der äußeren Klasse wird das Objekt der äußeren Klasse lange Zeit nicht durch Müll gesammelt, was ebenfalls zu Speicherverlusten führt.
3. Was ist GC? Warum GC?
GC bedeutet Garbage Collection, die dazu dient, Speicherlecks zu verhindern und den Speicher effektiv zu nutzen. Der Garbage Collector wird normalerweise als separater Thread mit niedriger Priorität ausgeführt und löscht und recycelt Objekte im Speicherheap, die unter unvorhersehbaren Umständen abgestorben sind oder längere Zeit nicht verwendet wurden Alle Objekte werden im Müll gesammelt.
4. JVM-Speichermodell (wichtig, GC-Algorithmus, neue Generation, alte Generation, permanente Generation usw. müssen im Detail verstanden werden)
Neue Generation: neu Erstellte Objekte werden mit der neuen Generation verwendet, um Speicher zuzuweisen. Wenn der Eden-Speicherplatz nicht ausreicht, werden die verbleibenden Objekte an Survivor übertragen. Die Größe der neuen Generation kann mit -Xmn gesteuert werden, oder mit -XX:SurvivorRatio kann das Verhältnis gesteuert werden von Eden zum Überlebenden
Alte Generation: Wird zum Speichern von Objekten der neuen Generation verwendet, die mehrere Garbage Collections überstanden haben
Persistenz: Implementiert den Methodenbereich, der hauptsächlich alle geladenen Klasseninformationen, Methodeninformationen und Konstanten speichert Schwimmbäder usw.
Sie können den Initialisierungswert und den Maximalwert des persistenten Bandes über -XX:PermSize und -XX:MaxPermSize angeben. Permanenter Speicherplatz ist nicht dasselbe wie der Methodenbereich. Hotspot JVM verwendet lediglich permanenten Speicherplatz, um den Methodenbereich zu implementieren. Einige virtuelle Maschinen verfügen nicht über permanenten Speicherplatz und verwenden andere Mechanismen, um den Methodenbereich zu implementieren.
Mark-Compact (Mark-Compact)
Dieser Algorithmus vereint die Vorteile der „Mark-Clear“- und „Copy“-Algorithmen. Es ist außerdem in zwei Phasen unterteilt. Die erste Phase markiert alle referenzierten Objekte ausgehend vom Wurzelknoten. Die zweite Phase durchläuft den gesamten Heap, löscht nicht markierte Objekte, „komprimiert“ die verbleibenden Objekte in einem der Heaps und entlädt sie der Reihe nach. Dieser Algorithmus vermeidet das Fragmentierungsproblem von „Mark-and-Sweep“ und vermeidet auch das Platzproblem des „Copy“-Algorithmus.
(Empfohlene verwandte Video-Tutorials: Java-Kurs)
5. Funktionsprinzip von GC
GC verwendet ein Referenzanzahlattribut für jedes Objekt. Wenn eine Referenz hinzugefügt wird, erhöht sich die Anzahl um 1, und wenn die Referenz freigegeben wird Die Anzahl verringert sich um 1 und die Anzahl beträgt 0. Sie kann recycelt werden, wenn das Objekt freigegeben wird. GC ist ein Hintergrund-Daemon-Prozess. Für Java-Programmierer verwenden Sie das Schlüsselwort new, um Objekte zuzuweisen Weisen Sie alle Verweise auf das Objekt auf null zu, damit das Programm nicht mehr darauf zugreifen kann. Wir nennen dieses Objekt „nicht erreichbar“. GC ist dafür verantwortlich, den Speicherplatz aller „nicht erreichbaren“ Objekte zurückzugewinnen.
Wenn der Programmierer bei GC ein Objekt erstellt, beginnt GC mit der Überwachung der Adresse, Größe und Verwendung des Objekts. Normalerweise verwendet GC einen gerichteten Graphen, um alle Objekte im Heap aufzuzeichnen und zu verwalten. Auf diese Weise wird bestimmt, welche Objekte „erreichbar“ und welche „nicht erreichbar“ sind. Wenn der GC feststellt, dass einige Objekte „nicht erreichbar“ sind, ist der GC für die Rückgewinnung dieser Speicherplätze verantwortlich.
Um jedoch sicherzustellen, dass GC auf verschiedenen Plattformen implementiert werden kann, regelt die Java-Spezifikation viele GC-Verhaltensweisen nicht streng. Beispielsweise gibt es keine klaren Vorschriften zu wichtigen Themen wie der Art des zu verwendenden Recyclingalgorithmus und dem Zeitpunkt des Recyclings. Daher verfügen verschiedene JVM-Implementierer häufig über unterschiedliche Implementierungsalgorithmen. Dies bringt auch große Unsicherheit in die Entwicklung von Java-Programmierern.
Das obige ist der detaillierte Inhalt vonJava-Interviewfragen, zusammengefasst aus langjähriger Entwicklungserfahrung – (5). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4
