In diesem Artikel werden wir verschiedene Arten von Interviewfragen in Java-Interviews erörtern, mit denen Arbeitgeber Java und gemeinsame objektorientierte Programmierfunktionen der Kandidaten testen können. Die folgenden Kapitel sind in zwei vorherige und nächste Artikel unterteilt. In dem ersten Artikel werden objektorientierte Programmierungen und deren Merkmale, gemeinsame Fragen zu Java und seinen Funktionen, Java-Sammlungskursen, Müllsammlern und im zweiten Artikel hauptsächlich Ausnahmebehandlung, Java-Applets, Swing, JDBC, Remote-Methodenaufrufe (RMI), Servlets und JSP erläutert.
Start!
Inhaltsverzeichnis
Objektorientierte Programmierung (OOP)
Häufige Java -Probleme
Java -Threads
Java -Sammlungsklasse
Müllsammler
Objektorientierte Programmierung (OOP)
Java ist eine Computerprogrammiersprache, die gleichzeitig, klassenbasierte und objektorientierte Unterstützung unterstützt. Die Vorteile der objektorientierten Softwareentwicklung sind unten aufgeführt:
Die objektorientierte Programmierung hat viele wichtige Merkmale, wie z. B. Kapselung, Vererbung, Polymorphismus und Abstraktion. In den folgenden Kapiteln werden wir diese Eigenschaften nacheinander analysieren.
Paket
Die Kapselung bietet Objekten die Möglichkeit, interne Merkmale und Verhaltensweisen zu verbergen. Ein Objekt bietet einige Methoden, auf die andere Objekte zugegriffen werden können, um die darin enthaltenen Daten zu ändern. In Java gibt es 3 Modifikatoren: öffentlich, privat und geschützt. Jeder Modifikator bietet andere Zugriffsrechte für andere Objekte im selben Paket oder unter verschiedenen Paketen.
Hier sind einige der Vorteile der Verwendung der Kapselung:
Weitere Informationen und Beispiele zur Kapselung finden Sie in diesem Dokument.
Polymorph
Polymorphismus ist eine Fähigkeit von Programmiersprachen, dieselben Schnittstellen für verschiedene zugrunde liegende Datentypen zu demonstrieren. Operationen an einem polymorphen Typ können auf andere Arten von Werten angewendet werden.
erben
Die Vererbung bietet Objekten die Möglichkeit, Felder und Methoden aus Basisklassen zu erhalten. Die Vererbung bietet wiederverwendete Codezeilen und kann vorhandenen Klassen auch neue Funktionen hinzufügen, ohne sie zu ändern.
Abstrakt
Abstraktion ist der Schritt der Trennung von Ideen von konkreten Instanzen. Erstellen Sie also Klassen anhand ihrer Funktionalität und nicht auf Implementierungsdetails. Java unterstützt das Erstellen abstrakter Klassen, die nur Schnittstellen aufdecken, aber keine Methodenimplementierungen enthalten. Der Hauptzweck dieser abstrakten Technik besteht darin, das Verhalten der Klasse von den Implementierungsdetails zu trennen.
Der Unterschied zwischen Abstraktion und Kapselung
Abstraktion und Kapselung sind komplementäre Konzepte. Einerseits konzentriert sich Abstract auf das Verhalten von Objekten. Auf der anderen Seite konzentriert sich die Kapselung auf die Details des Verhaltens des Objekts. Im Allgemeinen wird die Kapselung erreicht, indem die internen Statusinformationen des Objekts versteckt werden. Daher kann die Kapselung als Strategie zur Abstraktion angesehen werden.
Häufige Java -Probleme
1.Was ist eine virtuelle Java -Maschine? Warum wird Java als "plattformunabhängige Programmiersprache" bezeichnet?
Eine virtuelle Java -Maschine ist ein Prozess der virtuellen Maschine, mit dem Java -Bytecode ausgeführt werden kann. Die Java -Quelldatei wird in eine Bytecode -Datei zusammengestellt, die von einer java -virtuellen Maschine ausgeführt werden kann.
Java ist so konzipiert, dass Anwendungen auf einer beliebigen Plattform ausgeführt werden können, ohne dass Programmierer jede Plattform neu schreiben oder neu kompilieren können. Java Virtual Machines ermöglichen dies, da es die Anweisungslänge und andere Funktionen der zugrunde liegenden Hardwareplattform kennt.
2. Was ist der Unterschied zwischen JDK und JRE?
Die Java Runtime Environment (JRE) ist eine java -virtuelle Maschine, die Java -Programme ausführt. Es enthält auch Browser -Plugins, die zum Ausführen von Applets erforderlich sind. Das Java Development Toolkit (JDK) ist ein komplettes Java -Softwareentwicklungspaket, das JRE, Compiler und andere Tools (wie Javadoc, Java Debugger) umfasst, mit dem Entwickler Java -Anwendungen entwickeln, kompilieren und ausführen können.
3. Was bedeutet das Schlüsselwort "statischer"? Kann ich eine private oder statische Methode in Java überschreiben?
Auf das Schlüsselwort "statischer" zeigt an, dass auf eine Mitgliedsvariable oder eine Mitgliedsmethode ohne eine Instanzvariable der Klasse zugegriffen werden kann, zu der sie gehört.
Die statische Methode in Java kann nicht überschrieben werden, da die überschriebene Methode auf der dynamischen Laufzeitbindung basiert, während die statische Methode zur Kompilierungszeit statische Bindung ist. Die statische Methode hängt nicht mit einer Instanz der Klasse zusammen, wodurch sie nicht konzeptionell gilt.
4. Ist es möglich, in einer statischen Umgebung auf nicht statische Variablen zuzugreifen?
Die statische Variable gehört zur Klasse in Java und ihr Wert in allen Fällen ist der gleiche. Wenn die Klasse von einer virtuellen Java -Maschine geladen wird, wird die statische Variable initialisiert. Wenn Ihr Code versucht, ohne Instanzen auf nicht statische Variablen zuzugreifen, meldet der Compiler einen Fehler, da diese Variablen noch nicht erstellt wurden und mit keiner Fälle in Verbindung gebracht wurden.
5.Was werden die von Java unterstützten Datentypen unterstützt? Was ist automatische Demontage?
Die von der Java -Sprache unterstützten grundlegenden Datentypen sind:
Das automatische Boxen ist eine Konvertierung des Java -Compilers zwischen dem grundlegenden Datentyp und dem entsprechenden Objektverpackungstyp. Zum Beispiel: Int in INTEGER umwandeln, doppelt in doppeltes usw. doppelt usw. ist es automatisch Unboxing.
6. Was bedeutet das Überladen von Methoden und die Methodenüberladung in Java?
Die Überladung von Methoden in Java tritt auf, wenn zwei oder mehr Methoden die gleichen Methodennamen, jedoch unterschiedliche Parameter in derselben Klasse haben. Im Gegensatz dazu bedeutet die Überschreibung von Methoden, dass die Unterklasse die Methode der Elternklasse neu definiert. Überschreibungen für Methoden müssen denselben Methodennamen, Parameterliste und Rückgabetyp haben. Der Überschreiber kann den Zugriff auf die von ihm abdeckenden Methoden möglicherweise nicht einschränken.
7.Was ist ein Konstruktor in Java? Was ist Konstruktorüberlastung? Was ist ein Kopierkonstruktor?
Wenn ein neues Objekt erstellt wird, wird der Konstruktor aufgerufen. Jede Klasse hat einen Konstruktor. Wenn der Programmierer der Klasse keinen Konstruktor zur Verfügung stellt, erstellt der Java -Compiler einen Standardkonstruktor für die Klasse.
Konstruktorüberladung und Methodenüberlastung in Java sind sehr ähnlich. Für eine Klasse können mehrere Konstruktoren erstellt werden. Jeder Konstruktor muss eine eigene eindeutige Parameterliste haben.
Java unterstützt keine Kopiekonstruktoren wie in C ++. Dieser Unterschied liegt daran, dass Java den Standardkopiekonstruktor nicht erstellt, wenn Sie den Konstruktor nicht selbst schreiben.
8. Unterstützt Java mehrere Erbschaft?
Java nicht unterstützt, unterstützt nicht mehrfache Erbschaft. Jede Klasse kann nur eine Klasse erben, aber mehrere Schnittstellen implementieren.
9. Was ist der Unterschied zwischen einer Schnittstelle und einer abstrakten Klasse?
Java bietet und unterstützt die Erstellung abstrakter Klassen und Schnittstellen. Ihre Implementierungen haben Ähnlichkeiten, und die Unterschiede sind:
Sie können auch auf den Unterschied zwischen abstrakten Klassen und Schnittstellen in JDK8 verweisen
10.Was ist das Passieren und die Referenzabwicklung?
Das Objekt wird mit einem Wert übergeben, was bedeutet, dass eine Kopie des Objekts übergeben wird. Selbst wenn die Objektkopie geändert wird, wird der Wert des Quellobjekts nicht betroffen.
Ein Objekt wird mit Referenz übergeben, was bedeutet, dass es nicht das tatsächliche Objekt ist, sondern die Referenz des Objekts. Daher werden externe Änderungen des referenzierten Objekts auf allen Objekten reflektiert.
Java -Threads
11. Was ist der Unterschied zwischen einem Prozess und einem Thread?
Ein Prozess ist eine ausführende Anwendung, und ein Thread ist eine Ausführungssequenz innerhalb des Prozesses. Ein Prozess kann mehrere Threads haben. Themen werden auch als leichte Prozesse bezeichnet.
12. Wie viele verschiedene Möglichkeiten gibt es, um Threads zu erstellen? Welches magst du? Warum?
Es gibt drei Möglichkeiten, Threads zu erstellen:
Das Implementieren der Runnable -Schnittstelle ist beliebter, da die Thread -Klasse nicht erbelt wird. Wenn andere Objekte im Anwendungsdesign vererbt wurden, erfordert dies eine Vielzahl von Vererbung (während Java nicht mehrfach die Vererbung unterstützt), kann es nur Schnittstellen implementieren. Gleichzeitig sind Threadpools auch sehr effizient und einfach zu implementieren und zu verwenden.
13. Eine zusammenfassende Erklärung mehrerer verfügbarer Thread -Zustände.
Während der Ausführung können Threads in den folgenden Zuständen sein:
14. Was ist der Unterschied zwischen der Synchronisationsmethode und dem Synchronisationscode -Block?
In der Java -Sprache hat jedes Objekt ein Schloss. Threads können das synchronisierte Schlüsselwort verwenden, um Sperren für Objekte zu erhalten. Das synchronisierte Schlüsselwort kann auf Methodenebene (grobkörnige Sperre) oder auf der Codeblockebene (feinkörniges Sperre) angewendet werden.
15. Wie synchronisieren Sie Threads innerhalb des Monitors? Welche Synchronisationsstufe sollte das Programm tun?
Monitore und Schlösser werden zusammen in Java -virtuellen Maschinen verwendet. Der Monitor überwacht einen synchronen Codeblock, um sicherzustellen, dass nur ein Thread den synchronen Codeblock gleichzeitig ausführt. Jeder Monitor ist einer Objektreferenz zugeordnet. Bei den Themen kann der Synchronisierungscode nicht vor dem Erwerb des Schlosses ausgeführt werden.
16.Was ist Deadlock?
Wenn beide Prozesse darauf warten, dass die andere Partei die Ausführung abschließt, bevor sie fortgesetzt werden, tritt ein Deadlock auf. Das Ergebnis ist, dass beide Prozesse in unendlichem Warten gefangen sind.
17. Wie kann man sicherstellen, dass N -Threads auf N -Ressourcen zugreifen können, ohne Deaktivieren zu verursachen?
Bei der Verwendung von Multithreading besteht eine sehr einfache Möglichkeit, Deadlocks zu vermeiden, die Reihenfolge, in der die Schlösser erworben werden, und zwingen den Faden, die Schlösser in der angegebenen Reihenfolge zu erwerben. Wenn alle Threads Sperren in derselben Reihenfolge sperren und freigeben, gibt es keinen Deadlock.
Java -Sammlungsklasse
18.Was sind die grundlegenden Schnittstellen des Frameworks der Java -Sammlungsklasse?
Java-Sammlungskurse bieten einen gut gestalteten Satz von Schnittstellen und Klassen, die Operationen auf einer Reihe von Objekten unterstützen. Die grundlegendsten Schnittstellen in Java -Sammlungskursen sind:
19. Warum implementiert die Sammlungsklasse die klonbaren und serialisierbaren Schnittstellen nicht?
Die Collection Class -Schnittstelle gibt eine Reihe von Objekten an, die als Elemente bezeichnet werden. Jede spezifische Implementierungsklasse der Collection Class -Schnittstelle kann wählen, um Elemente auf ihre eigene Weise zu speichern und zu sortieren. Einige Sammelklassen ermöglichen doppelte Schlüssel, andere nicht.
20.Was ist ein Iterator?
Die Iterator -Schnittstelle bietet viele Möglichkeiten, über Sammlungselemente zu iterieren. Jede Sammelklasse enthält iterative Methoden, die eine Iteratorinstanz zurückgeben können. Der Iterator kann Elemente der zugrunde liegenden Sammlung während der Iteration löschen.
Die Semantik und Bedeutungen von Klonen oder Serialisierung hängen mit spezifischen Implementierungen zusammen. Daher sollte die spezifische Implementierung der Sammelklasse bestimmen, wie er kloniert oder serialisiert werden kann.
21. Was ist der Unterschied zwischen Iterator und Listiterator?
Der Unterschied ist unten aufgeführt:
22. Was ist der Unterschied zwischen einem schnellen Ausfall (fehlgeschlagen) und einem sicheren Fehler (fehlgeschlagener)?
Der Sicherheitsfehler des Iterators basiert auf Kopien der zugrunde liegenden Sammlung, sodass sie nicht von Änderungen der Quellsammlung beeinflusst werden. Alle Sammelklassen unter dem Paket von Java.util scheitern schnell, während alle Klassen unter dem Paket von Java.util.Concurrent sicher ausfallen. Ein schneller Iterator wirft eine Ausnahme von ConcurrentModificificationException aus, während ein sicherer Iterator eine solche Ausnahme niemals ausführt.
23. Was ist das Arbeitsprinzip von Hashmap in Java?
HashMap in Java speichert Elemente in Form von Schlüsselwertpaaren. HashMap benötigt eine Hash -Funktion, die HashCode () und Equals () -Methoden verwendet, um Elemente zu/aus der Sammlung hinzuzufügen und abzurufen. Wenn die Put () -Methode aufgerufen wird, berechnet HashMap den Hash -Wert des Schlüssels und speichert dann die Schlüsselwertpaare im entsprechenden Index im Satz. Wenn der Schlüssel bereits vorhanden ist, wird der Wert auf einen neuen Wert aktualisiert. Einige wichtige Merkmale von HashMap sind Kapazität, Lastfaktor und Schwellenwertkostgröße.
24. Wo spiegelt die Bedeutung von HashCode () und Equals () -Methoden wider?
HashMap in Java verwendet die Methoden von HashCode () und Equals (), um den Index von Schlüsselwertpaaren zu bestimmen. Diese beiden Methoden werden auch verwendet, um Werte basierend auf Tasten zu erhalten. Wenn diese beiden Methoden nicht korrekt implementiert werden, haben zwei verschiedene Schlüssel möglicherweise den gleichen Hash -Wert und können daher durch den Satz als gleich angesehen werden. Darüber hinaus werden diese beiden Methoden auch verwendet, um doppelte Elemente zu entdecken. Daher ist die Implementierung dieser beiden Methoden entscheidend für die Genauigkeit und Korrektheit von HashMap.
25. Was ist der Unterschied zwischen Hashmap und Hashtable?
26. Was ist der Unterschied zwischen einem Array (Array) und einer Liste (ArrayList)? Wann sollte ich Array anstelle von ArrayList verwenden?
Im Folgenden werden die Unterschiede zwischen Array und ArrayList aufgeführt:
27. Was ist der Unterschied zwischen ArrayList und LinkedList?
Sowohl ArrayList als auch LinkedList Implementieren Sie List -Schnittstellen und haben die folgenden Unterschiede:
ArrayList ist eine indexbasierte Datenschnittstelle, und ihre zugrunde liegende Ebene ist ein Array. Es ermöglicht den zufälligen Zugriff auf Elemente mit O (1) Zeitkomplexität. Entsprechend speichert LinkedList seine Daten in Form einer Elementliste. Jedes Element ist mit seinen vorherigen und nächsten Elementen verknüpft. In diesem Fall ist die zeitliche Komplexität des Findens eines Elements O (n).
Im Vergleich zu ArrayList ist das Einfügen, die Addition und das Löschen von LinkedList schneller, da bei Elementen in der Sammlung Elemente hinzugefügt werden, müssen die Größe nicht neu berechnet oder den Index wie ein Array aktualisiert werden.
LinkedList nimmt mehr Speicher als ArrayList auf, da die LinkedList zwei Referenzen für jeden Knoten speichert, eines auf das vorherige Element und eine zum nächsten Element.
Sie können auch auf ArrayList vs. LinkedList verweisen.
28.Was tun vergleichbare und vergleichende Schnittstellen? Listen Sie ihre Unterschiede auf.
Java bietet eine vergleichbare Schnittstelle, die nur eine Vergleichsmethode () enthält. Diese Methode kann zwei Objekte sortieren. Insbesondere wird eine negative Zahl, 0 und eine positive Zahl zurückgegeben, um anzuzeigen, dass das Eingabefiel geringer ist, gleich, gleich und größer als das bereits vorhandene Objekt.
Java bietet eine Komparatorschnittstelle, die zwei Methoden enthält: Compare () und Equals (). Die Vergleichsmethode () wird verwendet, um zwei Eingabeparameter zu sortieren und eine negative Zahl 0 zurückzugeben, und eine positive Zahl zeigt an, dass der erste Parameter geringer als, gleich und größer als der zweite Parameter. Die Equals () -Methode erfordert ein Objekt als Parameter, mit dem festgestellt wird, ob der Eingabeparameter gleich dem Vergleich ist. Diese Methode kehrt nur dann true zurück, wenn der Eingabeparameter auch ein Komparator und der Eingabeparameter und das aktuelle Vergleichssortierergebnis gleich sind.
29.Was ist eine Java -Prioritätswarteschlange?
PriorityQueue ist eine unbegrenzte Warteschlange, die auf dem Prioritätshaufen basiert, und ihre Elemente sind in natürlicher Reihenfolge sortiert. Bei der Erstellung können wir es mit einem Komparator zur Verfügung stellen, der für die Sortierung von Elementen verantwortlich ist. Prioritätsqueue erlaubt keine Nullwerte, da sie keine natürliche Ordnung haben oder keine zugeordneten Komparatoren haben. Schließlich ist PriorityQueueue nicht fadensicher, und die zeitliche Komplexität von eingehenden und dequeueings ist o (log (n)).
30. Verstehst du das große O-Symbol (Big-O-Notation)? Können Sie Beispiele für verschiedene Datenstrukturen angeben?
Das große O -Symbol beschreibt, wie gut die Skala oder Leistung des Algorithmus im schlimmsten Szenario ist, wenn die Elemente in der Datenstruktur zunehmen.
Große O -Symbole können auch verwendet werden, um andere Verhaltensweisen wie Speicherkonsum zu beschreiben. Da Sammelklassen tatsächlich Datenstrukturen sind, verwenden wir im Allgemeinen große O -Symbole, um die beste Implementierung basierend auf Zeit, Speicher und Leistung auszuwählen. Große O -Symbole können eine gute Erklärung für die Leistung großer Datenmengen geben.
31. Wie kann man handeln, ob man ein ungeordnetes Array oder ein bestelltes Array benutzt?
Der größte Vorteil eines geordneten Arrays besteht darin, dass die zeitliche Komplexität der Suche o (log n) ist, während das ungeordnete Array o (n) ist. Der Nachteil der geordneten Arrays ist, dass die zeitliche Komplexität des Einfügungsvorgangs O (n) ist, da Elemente mit großen Werten nach hinten bewegt werden müssen, um Platz für das neue Element zu schaffen. Im Gegensatz dazu ist die Komplexität der Insertionszeit eines ungeordneten Arrays die Konstante O (1).
32. Was sind die Best Practices für Java -Sammlungsklassen -Frameworks?
Die korrekte Auswahl der Art der Sammlung, die entsprechend den Anforderungen der Anwendung verwendet werden soll, ist für die Leistung sehr wichtig. Zum Beispiel: Wenn die Größe des Elements festgelegt ist und im Voraus bekannt ist, sollten wir Array anstelle von ArrayList verwenden.
Einige Sammelklassen ermöglichen die Angabe der Anfangskapazität. Wenn wir die Anzahl der gespeicherten Elemente schätzen können, können wir daher die anfängliche Kapazität festlegen, um die Neuberechnung des Hash -Werts zu vermeiden oder zu erweitern.
Für die Sicherheit von Typen, Lesbarkeit und Robustheit werden immer Generika verwendet. Gleichzeitig kann die Verwendung von Generika auch ClassCastException zur Laufzeit vermeiden.
Durch die Verwendung der von JDK als Schlüssel zur Karte bereitgestellten unveränderlichen Klasse kann es vermeiden, dass die Methoden HashCode () und Equals () für unsere eigenen Klassen implementiert werden.
Schnittstellen sind bei der Programmierung besser als die Implementierung.
Wenn die zugrunde liegende Sammlung tatsächlich leer ist, geben Sie ein Set oder ein Array mit Länge 0 zurück und geben Sie Null nicht zurück.
33. Was sind die Unterschiede zwischen der Enumerationsschnittstelle und der Iterator -Schnittstelle?
Die Aufzählung ist doppelt so schnell wie Iterator und verbraucht weniger Speicher. Iterator ist jedoch viel sicherer als die Aufzählung, da andere Threads Objekte in der Sammlung, die von Iterator durchquert werden, nicht ändern können. Gleichzeitig ermöglicht es Iterator dem Anrufer, Elemente in der zugrunde liegenden Sammlung zu löschen, was für die Aufzählung unmöglich ist.
34. Was ist der Unterschied zwischen Hashset und Treeset?
Hashset wird durch eine Hash -Tabelle implementiert, sodass seine Elemente nicht angeordnet sind. Die zeitliche Komplexität der Methoden add (), remove () und enthält () () o (1).
Andererseits wird Treeset durch eine baumförmige Struktur implementiert, und die darin enthaltenen Elemente werden bestellt. Daher ist die zeitliche Komplexität der Methoden add (), removal () und enthält () (logn).
Müllsammler
35. Was ist der Zweck der Müllsammlung in Java? Wann wird Müll gesammelt?
Der Zweck der Müllsammlung besteht darin, Objekte zu identifizieren und zu verwerfen, mit denen die Anwendung Ressourcen nicht mehr frei und wiederverwendet.
36. Was wird System.gc () und Runtime.gc () tun?
Diese beiden Methoden werden verwendet, um die JVM zur Durchführung der Müllsammlung zu veranlassen. Das sofort abhängige oder verzögerte Verzögerung der Müllsammlung ist jedoch JVM abhängig.
37. Wann wird die Methode Finalize () aufgerufen? Was ist der Zweck von Zerstörern?
Bevor der von dem Objekt besetzte Speicher befreien, ruft der Müllsammler die Methode Finalize () auf. Es wird im Allgemeinen empfohlen, Ressourcen freizugeben, die von Objekten in dieser Methode gehalten werden.
38. Wenn die Referenz des Objekts auf NULL eingestellt ist, wird der Müllsammler den vom Objekt besetzten Speicher sofort freigeben?
Nein, dieses Objekt kann im nächsten Müllsammlungszyklus recycelbar sein.
39. Wie sieht die Java Heap -Struktur aus? Was ist Perm Gen Space auf dem Haufen?
Der Heap des JVM ist der Laufzeitbereich, und alle Instanzen und Arrays von Klassen werden auf dem Haufen Speicher zugewiesen. Es wird erstellt, wenn der JVM gestartet wird. Der vom Objekt besetzte Heap -Speicher wird vom automatischen Speicherverwaltungssystem gesammelt, dh dem Müllsammler.
Das Heap -Speicher besteht aus Objekten, die überleben und sterben. Die überlebenden Objekte sind für die Anwendung zugänglich und sind nicht Müll gesammelt. Das tote Objekt ist ein Objekt, das für die Anwendung nicht zugänglich ist und vom Müllsammler nicht recycelt wurde. Sie belegen den Heap -Speicherraum, bis der Müllsammler diese Objekte zurückerobert.
40. Was ist der Unterschied zwischen einem seriellen Sammler und einem Durchsatzsammler?
Durchsatzsammler verwenden parallele Versionen der nächsten Generation von Müllsammlern, die für Anwendungen mit mittelgroßen und groß angelegten Daten verwendet werden. Seriensammler reichen für die meisten kleinen Anwendungen aus (benötigen etwa 100 m Speicher für moderne Prozessoren).
41. Wann können Objekte in Java Müll gesammelt werden?
Wenn ein Objekt für die Anwendung, die derzeit dieses Objekt verwendet, nicht erreichbar ist, kann das Objekt recycelt werden.
42. Wird Müllsammlung in der dauerhaften Generation von JVM auftreten?
Die Müllsammlung wird in der dauerhaften Generation nicht auftreten. Wenn die dauerhafte Generation voll ist oder den kritischen Wert überschreitet, wird die vollständige Müllsammlung (Full GC) ausgelöst. Wenn Sie die Ausgabeinformationen des Müllsammlers sorgfältig überprüfen, werden Sie feststellen, dass die dauerhafte Generation ebenfalls recycelt wird. Aus diesem Grund ist die korrekte Größe der dauerhaften Erzeugung sehr wichtig, um eine vollständige GC zu vermeiden. Bitte beziehen Sie sich in Java 8: Von der ständigen Generation bis zum Metadatenbereich
(Anmerkung des Übersetzers: Die dauerhafte Generation wurde in Java 8 entfernt und ein neuer einheimischer Speicherbereich namens The Metadata Area wurde hinzugefügt)
Die oben genannten ist eine Zusammenstellung der Informationen für Java -Interviewfragen. Wir werden in Zukunft weiterhin relevante Informationen hinzufügen. Vielen Dank für Ihre Unterstützung für diese Website!