JavaRush /Java-Blog /Random-DE /Level 34. Antworten auf Interviewfragen zum Levelthema
lichMax
Level 40
Санкт-Петербург

Level 34. Antworten auf Interviewfragen zum Levelthema

Veröffentlicht in der Gruppe Random-DE
Ich habe die Website mit meiner nativen Suche durchsucht und alles mit Google durchsucht – auf die Fragen dieser Ebene gibt es keine Antworten. Vielleicht habe ich etwas verpasst und sie sind immer noch irgendwo auf der Website!? Stufe 34. Antworten auf Interviewfragen zum Thema Stufe - 1Für alle Fälle füge ich die Antworten bei, die ich für mich selbst geschrieben habe: Fragen für das Interview:
  1. Was ist Garbage Collection?
  2. Wann wird die Methode aufgerufen finalize?
  3. Was passiert, wenn finalizein einer Methode eine Ausnahme auftritt?
  4. Was ist passiert SoftReference?
  5. Was ist passiert WeakReference?
  6. Was ist passiert PhantomReference?
  7. Wie funktioniert es WeakHashMap? Wo wird es verwendet?
  8. Warum müssen Sie eine Warteschlange an den Konstruktor übergeben PhantomReference?
  9. Warum brauchen Sie einen Logger?
  10. Welche Loggereinstellungen kennen Sie?
Meine Antworten:
  1. Dies ist ein Mechanismus zur Zerstörung unnötiger Objekte. Nicht benötigte Objekte sind unbenutzte Objekte. Es gibt zwei Möglichkeiten, solche Objekte zu finden: Referenzzählung und Nachverfolgung. Im ersten Fall ist jedem Objekt eine Variable zugeordnet, die die Anzahl der Verweise auf dieses Objekt speichert. Sinkt diese Zahl auf Null, gilt das Objekt als tot. Im zweiten Fall folgt der Garbage Collector Objektverweisen von den Wurzelpunkten bis zum Ende (bis zum Nullwert) und durchläuft dabei den gesamten Baum. Objekte, die von den Wurzelpunkten aus nicht erreicht werden können, gelten als tot. Die Wurzelpunkte sind alle aktiven Threads, die Hauptmethode, die Argumente der Methode main()sowie alle statischen Variablen der Klasse, in der sich die Methode befindet main().

    Die Bestimmung, welche Objekte vernichtet werden können, ist nur der erste Teil der Aufgabe des Garbage Collectors. Der zweite Teil besteht darin, sie tatsächlich zu löschen und mit dem Speicher zu arbeiten. Hier kommt ein hybrider Ansatz zum Einsatz. Der gesamte für Objekte verfügbare Speicher ist in drei Bereiche unterteilt: den Bereich junger Objekte, den Bereich alter Objekte und den Bereich permanenter Objekte (dies sind Klassen, Metadaten, interne Zeichenfolgen usw.). Der erste Bereich ist in drei weitere Unterbereiche unterteilt: Eden und Suvivor Space 1 und 2. Eden speichert alle neu erstellten Objekte. In den verbleibenden zwei Zonen werden Objekte gespeichert, die die letzte Garbage Collection überstehen. Der Garbage Collector arbeitet mit diesem gesamten Bereich (dem Bereich junger Objekte) wie folgt. Bei der nächsten Müllabfuhr findet er lebende Objekte im Eden-Bereich und kopiert sie in den zweiten Überlebensbereich. Danach sucht er auch im ersten Bereich nach lebenden Objekten und kopiert diese entweder in den zweiten Bereich der Überlebenden, oder, wenn sie schon „alt“ genug sind, in den Bereich der alten Generation. Anschließend räumt er das Eden-Gebiet und das erste Überlebensgebiet. Als nächstes betrachtet er den zweiten Bereich der Überlebenden als den ersten. Und damit endet die Müllabfuhr für diesen Bereich.

    Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые ein Objektы в ней во время своей работы перемещает в начало области. Соответственно, вторая часть области будет состоять только из пустого пространства и мёртвых ein Objektов. После этого сборщик мусора завершает свою работу.

  2. Перед уничтожение ein Objektа сборщиком мусора. Также можно вручную запустить вызовы этого метода у всех недостижимых ein Objektов, для этого надо вызвать метод System.runFinalization() oder Runtime.getRuntime().runFinalization().

  3. Это исключение будет проигнорировано, и произойдёт выход из метода.

  4. SoftReference переводится Wie "мягкая Verknüpfung". Эта Verknüpfung на ein Objekt, но более слабая, чем обычная Verknüpfung (StrongReference). Объекты, на которые сущесвуют только мягкие ссылки, называются мягCodeостижимыми. Такие ein Objektы не уничтожаются в обычном случае. Но если у JVM закочиналась память, то сборщик мусоры удаляет все такие ein Objektы.

  5. WeakReference — это так называемая слабая Verknüpfung на ein Objekt. Она ещё слабее Soft-ссылки. Все ein Objektы, на которые существуют только слабые ссылки, будут удалены при ближайщей сборке мусора.

  6. PhantomReference — это самая слабая Verknüpfung. Механизм работы с такими Verknüpfung запускается только если на ein Objekt нет больше ниWieих других ссылок. Призрачные ссылки используются для сложной Verfahrenы удаления ein Objektа. Это может быть необходимо, если ein Objekt делает что за граница Java-машины, например, вызывает низкоуровневые функции ОС oder пишет своё состояние в файл, oder делает ещё что-то важное и сложное.

    Механизм работы с такими Verknüpfungми следующий. Если на ein Objekt не осталось больше ниWieих других ссылок, и у него переопределён метода finalize(), то этот метода будет вызван во время ближащей сборки мусора. Если же этот метод не переопределён, то этот ein Objekt пропускает текущую сборку мусора, и попадает только в следующую. Во время этой (следующей) сборки мусора данный ein Objekt помещается в очередь призрачных ein Objektов, из которой будет удалён, когда у его призрачной ссылки вызовут метод clear(). Также стоит отметить, что метода get() у призрачной Verknüpfung всегда возвращает null (в отличие от двух других несильных ссылок, у которых он возвращает null, только если ein Objekt уже уничтожен).

  7. WeakHashMap — это HashMap, у которого ключами являются слабые ссылки. Поэтому, если во время ближайшей сборки мусора будет обнаружено, что на ein Objekt существует только Verknüpfung в WeakHashMap, то из WeakHashMap будет удалена вся пара "ключ-Bedeutung", связанная с этим ein Objektом.

    В связи с этим данная коллекция может быть использована для хранения Wieой-то дополнительной, не очень важной информации об ein Objektе. Также её удобно использоваться для хранения Wieой-то временной информации (которая нужная только в рамках данной операции).

  8. Эта очередь используется для отслеживания того, что ein Objekt больше не нужен. Может быть использовано для закрытия ресурсов, открытых данным ein Objektом (например, удаление созданных файлов).

  9. Ein Logger wird benötigt, um Informationen über das Verhalten des Programms sowie einige seiner Zustände zu speichern. Kann zum Debuggen und Identifizieren von Programmfehlern und -fehlern verwendet werden. Der Logger ermöglicht es dem Entwickler auch, während der Ausführung Feedback von seinem Programm zu erhalten. Darüber hinaus kann der Logger bei kritischen Fehlern schnell die richtigen Personen (z. B. Entwickler, Kunden, Projektmanager, technischer Support usw.) über diese Fehler benachrichtigen.

  10. Beim Einrichten der Protokollierung können Sie Folgendes angeben:

    • der Ort, an dem die Informationen geschrieben werden (Datei, Konsole, Datenbank, Netzwerk usw.)
    • welche Level-Meldungen aufgezeichnet werden
    • Art der Protokolleinträge
    • Für Dateien können Sie angeben: Pfad zur Datei und zum Verzeichnis, Dateigröße, Anzahl der Dateien
    • Geben Sie für jedes einzelne Paket eine eigene Ebene von Nachrichten an, die in das Protokoll geschrieben werden
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION