JavaRush /Java Blog /Random-TK /Dereje 34. Dereje derejesinde mowzuk soraglaryna jogaplar...
lichMax
Dereje
Санкт-Петербург

Dereje 34. Dereje derejesinde mowzuk soraglaryna jogaplar

Toparda çap edildi
Nativeerli gözlegimi ulanyp, sahypany gözledim we Google-dan peýdalanyp hemme zady gözledim - bu derejedäki soraglara jogap ýok. Belki bir zady küýsedim, olar henizem saýtyň bir ýerinde!? 34-nji dereje. 1-nji dereje temasyndaky söhbetdeşlik soraglaryna jogaplarŞeýle bolan ýagdaýynda, özüm üçin ýazan jogaplarymy goşýaryn: Söhbetdeşlik üçin soraglar:
  1. Zibil ýygnamak näme?
  2. Usul haçan diýilýär finalize?
  3. finalizeUsulda kadadan çykma ýüze çyksa näme bolýar ?
  4. Name boldy SoftReference?
  5. Name boldy WeakReference?
  6. Name boldy PhantomReference?
  7. Bu nähili işleýär WeakHashMap? Nirede ulanylýar?
  8. Näme üçin konstruktora nobat bermeli PhantomReference?
  9. Näme üçin ýazyjy gerek?
  10. Haýsy ýazgy sazlamalaryny bilýärsiňiz?
Jogaplarym:
  1. Gereksiz zatlary ýok etmegiň mehanizmi. Gerek däl zatlar ulanylmaýan zatlar. Şeýle zatlary tapmagyň iki usuly bar: salgylanma sanamak we gözlemek. Birinji ýagdaýda, her bir obýekt bu obýekte salgylanmalaryň sanyny saklaýan üýtgeýji bilen baglanyşyklydyr. Bu san nola düşse, obýekt öli hasaplanýar. Ikinji ýagdaýda, zibil ýygnaýjy, bu agajyň üstünden geçip, kök nokatlaryndan ahyryna çenli (null bahasyna çenli) obýekt salgylanmalaryna eýerýär. Kök nokatlaryndan baryp bilmeýän zatlar öli hasaplanýar. Kök nokatlarynyň hemmesi işjeň sapaklar, esasy usul, usulyň argumentleri main(), şeýle hem usulyň ýerleşýän synpynyň ähli statiki üýtgeýjileri 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 файлу и каталогу, размер файлов, количество файлов
    • указать для каждого отдельного пакета свой уровень сообщений, которые будут писаться в лог
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION