JavaRush /Блоги Java /Random-TG /Сатҳи 34. Ҷавобҳо ба саволҳои мусоҳиба дар мавзӯи сатҳ
lichMax
Сатҳи
Санкт-Петербург

Сатҳи 34. Ҷавобҳо ба саволҳои мусоҳиба дар мавзӯи сатҳ

Дар гурӯҳ нашр шудааст
Ман бо истифода аз ҷустуҷӯи модарии худ сайтро ҷустуҷӯ кардам ва ҳама чизро бо истифода аз Google ҷустуҷӯ кардам - ​​ба саволҳои ин сатҳ ҷавоб нест. Шояд ман чизеро пазмон шудам ва онҳо ҳоло ҳам дар ҷое дар сайт ҳастанд!? Сатҳи 34. Ҷавобҳо ба саволҳои мусоҳиба дар мавзӯи сатҳ - 1Ба ҳар ҳол, ман ҷавобҳоеро, ки барои худам навиштаам, замима мекунам: Саволҳо барои мусоҳиба:
  1. Ҷамъоварии ахлот чист?
  2. Усул кай номида мешавад finalize?
  3. Чӣ мешавад, агар finalizeдар усул истисно рӯй диҳад?
  4. Чӣ гап шудааст SoftReference?
  5. Чӣ гап шудааст WeakReference?
  6. Чӣ гап шудааст PhantomReference?
  7. Он чӣ гуна кор мекунад WeakHashMap? Дар куҷо истифода мешавад?
  8. Чаро ба шумо лозим аст, ки навбатро ба конструктор гузоред PhantomReference?
  9. Чаро ба шумо чӯбдаст лозим аст?
  10. Кадом танзимоти сабтгоҳро шумо медонед?
Ҷавобҳои ман:
  1. Ин механизми нест кардани an objectҳои нолозим аст. Объектҳои нодаркор an objectҳои истифоданашуда мебошанд. Ду роҳи дарёфти чунин an objectҳо вуҷуд дорад: ҳисобкунии истинод ва пайгирӣ. Дар ҳолати аввал, ҳар як an object бо тағирёбанда алоқаманд аст, ки шумораи истинодҳоро ба ин an object нигоҳ медорад. Агар ин рақам ба сифр афтад, он гоҳ an object мурда ҳисобида мешавад. Дар ҳолати дуюм, коллектори ахлот истинодҳои an objectро аз нуқтаҳои реша то ба охир (то арзиши сифр) пайгирӣ карда, тамоми дарахтро тай мекунад. Объектҳое, ки аз нуқтаҳои реша ба онҳо расида наметавонанд, мурда ҳисобида мешаванд. Нуқтаҳои реша ҳама риштаҳои фаъол, усули асосӣ, аргументҳои метод main(), инчунин ҳама тағирёбандаҳои статикии синфе, ки метод дар он ҷойгир аст, мебошанд main().

    Определение an objectов, пригодных к уничтожению - это только первая часть работы сборщика мусора. Вторая часть - это собственно их удаление и работа с памятью. Здесь используется гибридный подход. Вся доступная для an objectов память разделяется на три области: область молодых an objectов, область старых an objectов и область перманентных an objectов (это классы, метаданные, интернированные строки и т.д.). Первая область разделяется ещё на три подобласти: на Eden и suvivor space 1 и 2. В Eden хранятся все только созданные an objectы. В остальных двух зонах хранятся an objectы, выживщие после последней сборки мусора. Сборщик мусора работает со всей этой областью (областью молодых an objectов) следующим образом. Во время очередной сборки мусора он находит живые an objectы в области Eden и копирует их во вторую область выживших. После этого он в первой области также ищет живые an objectы и копирует их либо в вторую область выживших, либо, если они уже достаточно "старые" - область старого поколения. После этого он очищает область Eden и первую область выживших. Дальше он считает вторую область выживших первой. И всё, на это сборка мусора заканчивается для этой области.

    Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые 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. При настройки логгрирования можно указать следующие вещи:

    • место, куда будет писаться информация (файл, консоль, база данных, сеть и т.д.)
    • messages Howого уровня будут записываться
    • вид записей в логе
    • для файлов можно указать: way to файлу и каталогу, размер файлов, количество файлов
    • указать для каждого отдельного пакета свой уровень сообщений, которые будут писаться в лог
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION