JavaRush /Java блогу /Random-KY /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 өлгөн деп эсептелет. Экинчи учурда, таштанды жыйноочу an object шилтемелерин түпкү чекиттерден аягына чейин (нөлдүк мааниге чейин) ээрчип, бүт даракты аралайт. Тамыр чекиттеринен жете албаган нерселер өлүк деп эсептелет. Тамыр чекиттери - бардык активдүү жиптер, негизги ыкма, методдун аргументтери main(), ошондой эле метод жайгашкан класстын бардык статикалык өзгөрмөлөрү main().

    Кайсы an objectилерди жок кылууга жарамдуу экенин аныктоо таштанды жыйноочунун ишинин биринчи гана бөлүгү. Экинчи бөлүк чындыгында аларды жок кылуу жана эстутум менен иштөө. Бул жерде гибриддик ыкма колдонулат. Объекттер үчүн жеткorктүү болгон бардык эс тутум үч аймакка бөлүнөт: жаш an objectтердин аянты, эски an objectтердин аянты жана туруктуу an objectтердин аянты (бул класстар, метаберorштер, интерндик саптар ж.б.). Биринчи аймак дагы үч субрайага бөлүнөт: Eden жана suvivor мейкиндиги 1 жана 2. Эден бардык жаңы түзүлгөн an objectтерди сактайт. Калган эки зонада акыркы таштанды чогултуудан аман калган an objectтер сакталат. Таштанды жыйноочу бүткүл аймак менен (жаш an objectилердин аянты) төмөнкүдөй иштейт. Кийинки таштанды чогултуу учурунда ал Эйден аймагынан тирүү an objectтерди таап, аларды экинчи аман калган аймакка көчүрөт. Андан кийин, ал биринчи аймактагы тирүү an objectтерди издеп, аларды же аман калгандардын экинчи аймагына, же эгерде алар жетиштүү "эски" болсо, эски муундун аймагына көчүрөт. Андан кийин ал Эйден аймагын жана биринчи аман калган аймакты тазалайт. Андан кийин, ал аман калгандардын экинчи аймагын биринчи деп эсептейт. Мына ушундай, таштанды чогултуу бул аймакка бүтөт.

    Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые 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. Логер программанын жүрүм-туруму, ошондой эле анын айрым штаттары жөнүндө маалыматты сактоо үчүн керек. Мүчүлүштүктөрдү оңдоо жана программанын каталарын жана кемчorктерин аныктоо үчүн колдонулушу мүмкүн. Логер ошондой эле иштеп чыгуучуга анын программасы иштеп жатканда анын пикирлерин алууга мүмкүнчүлүк берет. Мындан тышкары, олуттуу каталар болгон учурда, логгер бул каталар жөнүндө керектүү адамдарга (мисалы, иштеп чыгуучуларга, кардарларга, долбоордун менеджерлерине, техникалык колдоолорго ж.б.) тез кабарлай алат.

  10. Киргизүүнү орнотууда, сиз төмөнкү нерселерди белгилей аласыз:

    • маалымат жазыла турган жер (файл, консол, маалымат базасы, тармак ж.б.)
    • кандай деңгээлдеги билдирүүлөр жазылат
    • журнал жазууларынын түрү
    • файлдар үчүн сиз белгилей аласыз: файлга жана каталогго жол, файлдын өлчөмү, файлдардын саны
    • ар бир жеке пакет үчүн журналга жазыла турган билдирүүлөрдүн өз деңгээлин аныктаңыз
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION