JavaRush /Java Blog /Random-JA /レベル 34. レベルのトピックに関するインタビューの質問への回答
lichMax
レベル 40
Санкт-Петербург

レベル 34. レベルのトピックに関するインタビューの質問への回答

Random-JA グループに公開済み
ネイティブ検索を使用してサイトを検索し、Google を使用してすべてを検索しましたが、このレベルの質問に対する答えはありません。もしかしたら私が何かを見逃したのかもしれませんが、まだサイトのどこかに残っているのかもしれません! レベル 34. レベル - 1 のトピックに関するインタビューの質問への回答念のため、私が自分用に書いた回答を添付します。 面接の質問:
  1. ガベージコレクションとは何ですか?
  2. メソッドはいつ呼び出されますかfinalize?
  3. finalizeメソッド内で例外が発生した場合はどうなりますか?
  4. どうしたのSoftReference
  5. どうしたのWeakReference
  6. どうしたのPhantomReference
  7. どのように機能するのでしょうかWeakHashMap?どこで使われていますか?
  8. なぜコンストラクターにキューを渡す必要があるのでしょうかPhantomReference?
  9. なぜロガーが必要なのでしょうか?
  10. ロガーの設定は何ですか?
私の答えは次のとおりです。
  1. これは不要なオブジェクトを破棄するためのメカニズムです。不要なオブジェクトは、未使用のオブジェクトです。このようなオブジェクトを見つけるには、参照カウントとトレースの 2 つの方法があります。最初のケースでは、各オブジェクトは、このオブジェクトへの参照の数を格納する変数に関連付けられます。この数値がゼロに下がると、オブジェクトは死亡したと見なされます。2 番目のケースでは、ガベージ コレクターはルート ポイントから最後まで (null 値まで) オブジェクト参照をたどり、このツリー全体を横断します。ルート ポイントから到達できないオブジェクトは、デッドとみなされます。ルート ポイントは、すべてのアクティブなスレッド、メイン メソッド、メソッドの引数main()、およびメソッドが配置されているクラスのすべての静的変数ですmain()

    どのオブジェクトが破棄の対象となるかを決定することは、ガベージ コレクターの仕事の最初の部分にすぎません。2 番目の部分では、実際にそれらを削除し、メモリを操作します。ここではハイブリッドアプローチが使用されます。オブジェクトに使用可能なすべてのメモリは、若いオブジェクトの領域、古いオブジェクトの領域、永続オブジェクト (クラス、メタデータ、インターンされた文字列など) の領域の 3 つの領域に分割されます。最初のエリアは、さらに 3 つのサブエリア、Eden および Suvivor スペース 1 および 2 に分割されます。Eden には、新しく作成されたすべてのオブジェクトが保存されます。残りの 2 つのゾーンには、最後のガベージ コレクション後に残ったオブジェクトが格納されます。ガベージ コレクターは、この領域全体 (若いオブジェクトの領域) を次のように処理します。次のガベージ コレクション中に、彼はエデン エリアで生き物を見つけ、それらを 2 番目の生存者エリアにコピーします。この後、彼は最初のエリアで生きているオブジェクトを探し、それらを生存者の2番目のエリアにコピーするか、すでに十分に「古い」場合は古い世代のエリアにコピーします。その後、エデンエリアと最初のサバイバーエリアをクリア。次に、彼は生存者の2番目の領域を最初の領域であると考えます。以上で、このエリアのガベージコレクションは終了です。

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

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

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

  4. SoftReference переводится How "мягкая link". Эта link на an object, но более слабая, чем обычная link (StrongReference). Объекты, на которые сущесвуют только мягкие ссылки, называются мягcodeостижимыми. Такие an objectы не уничтожаются в обычном случае. Но если у JVM закочиналась память, то сборщик мусоры удаляет все такие an objectы.

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

  6. PhantomReference — это самая слабая link. Механизм работы с такими link запускается только если на an object нет больше ниHowих других ссылок. Призрачные ссылки используются для сложной proceduresы удаления an object. Это может быть необходимо, если an object делает что за граница Java-машины, например, вызывает низкоуровневые функции ОС or пишет своё состояние в файл, or делает ещё что-то важное и сложное.

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

  7. WeakHashMap — это HashMap, у которого ключами являются слабые ссылки. Поэтому, если во время ближайшей сборки мусора будет обнаружено, что на an object существует только link в WeakHashMap, то из WeakHashMap будет удалена вся пара "ключ-meaning", связанная с этим an objectом.

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

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

  9. ロガーは、プログラムの動作やその状態の一部に関する情報を保存するために必要です。プログラムのエラーや障害のデバッグと特定に使用できます。ロガーを使用すると、開発者はプログラムの実行中にプログラムからフィードバックを受け取ることもできます。さらに、重大な障害が発生した場合、ロガーはこれらの障害について適切な担当者 (開発者、クライアント、プロジェクト マネージャー、テクニカル サポートなど) に迅速に通知できます。

  10. ログ記録を設定するときは、次のことを指定できます。

    • 情報が書き込まれる場所 (ファイル、コンソール、データベース、ネットワークなど)
    • どのレベルのメッセージが録音されるか
    • ログエントリの種類
    • 指定できるファイル: ファイルとディレクトリへのパス、ファイル サイズ、ファイル数
    • 個々のパッケージごとに、ログに書き込まれる独自のレベルのメッセージを指定します。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION