JavaRush /Java Blog /Random-TL /Level 34. Mga sagot sa mga tanong sa panayam sa antas ng ...
lichMax
Antas
Санкт-Петербург

Level 34. Mga sagot sa mga tanong sa panayam sa antas ng paksa

Nai-publish sa grupo
Hinanap ko ang site gamit ang aking katutubong paghahanap at hinanap ko ang lahat gamit ang Google - walang mga sagot sa mga tanong mula sa antas na ito. Baka may namiss ako, andito pa rin sila somewhere on the site!? Antas 34. Mga sagot sa mga tanong sa panayam sa paksa ng antas - 1Kung sakali, inilakip ko ang mga sagot na isinulat ko para sa aking sarili: Mga tanong para sa panayam:
  1. Ano ang pangongolekta ng basura?
  2. Kailan tinawag ang pamamaraan finalize?
  3. Ano ang mangyayari kung finalizeang isang pagbubukod ay nangyari sa isang pamamaraan?
  4. Anong nangyari SoftReference?
  5. Anong nangyari WeakReference?
  6. Anong nangyari PhantomReference?
  7. Paano ito gumagana WeakHashMap? Saan ito ginagamit?
  8. Bakit kailangan mong magpasa ng pila sa tagabuo PhantomReference?
  9. Bakit kailangan mo ng logger?
  10. Anong mga setting ng logger ang alam mo?
Aking mga sagot:
  1. Ito ay isang mekanismo para sa pagsira ng mga hindi kinakailangang bagay. Ang mga bagay na hindi kailangan ay mga bagay na hindi ginagamit. Mayroong dalawang paraan upang mahanap ang mga naturang bagay: pagbibilang ng sanggunian at pagsubaybay. Sa unang kaso, ang bawat bagay ay nauugnay sa isang variable na nag-iimbak ng bilang ng mga sanggunian sa bagay na ito. Kung ang bilang na ito ay bumaba sa zero, kung gayon ang bagay ay ituturing na patay. Sa pangalawang kaso, ang tagakolekta ng basura ay sumusunod sa mga sanggunian ng bagay mula sa mga punto ng ugat hanggang sa dulo (hanggang sa null value), na binabagtas ang buong punong ito. Ang mga bagay na hindi nito maabot mula sa mga ugat ay itinuturing na patay. Ang mga root point ay lahat ng mga aktibong thread, ang pangunahing pamamaraan, ang mga argumento ng pamamaraan main(), pati na rin ang lahat ng mga static na variable ng klase kung saan matatagpuan ang pamamaraan main().

    Ang pagtukoy kung aling mga bagay ang karapat-dapat para sa pagkawasak ay ang unang bahagi lamang ng trabaho ng kolektor ng basura. Ang pangalawang bahagi ay talagang tinatanggal ang mga ito at nagtatrabaho sa memorya. Ang isang hybrid na diskarte ay ginagamit dito. Ang lahat ng memorya na magagamit para sa mga bagay ay nahahati sa tatlong mga lugar: ang lugar ng mga batang bagay, ang lugar ng mga lumang bagay at ang lugar ng mga permanenteng bagay (ito ay mga klase, metadata, interned string, atbp.). Ang unang lugar ay nahahati sa tatlo pang subareas: Eden at suvivor space 1 at 2. Iniimbak ng Eden ang lahat ng bagong likhang bagay. Ang natitirang dalawang zone ay nag-iimbak ng mga bagay na nakaligtas sa huling koleksyon ng basura. Gumagana ang kolektor ng basura sa buong lugar na ito (ang lugar ng mga batang bagay) tulad ng sumusunod. Sa susunod na koleksyon ng basura, nakahanap siya ng mga buhay na bagay sa Eden area at kinopya ang mga ito sa pangalawang survivor area. Pagkatapos nito, naghahanap din siya ng mga buhay na bagay sa unang lugar at kinopya ang mga ito alinman sa pangalawang lugar ng mga nakaligtas, o, kung sila ay sapat na "matanda", sa lugar ng lumang henerasyon. Pagkatapos, nililinis niya ang Eden area at ang unang survivor area. Susunod, isinasaalang-alang niya ang pangalawang lugar ng mga nakaligtas na ang una. At iyon nga, nagtatapos ang koleksyon ng basura para sa lugar na ito.

    Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые 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. Ang isang logger ay kinakailangan upang i-save ang impormasyon tungkol sa pag-uugali ng programa, pati na rin ang ilan sa mga estado nito. Maaaring gamitin para sa pag-debug at pagtukoy ng mga error at pagkabigo ng program. Pinapayagan din ng logger ang developer na makatanggap ng feedback mula sa kanyang program habang ito ay tumatakbo. Bilang karagdagan, sa kaso ng mga kritikal na pagkabigo, mabilis na maabisuhan ng logger ang mga tamang tao (halimbawa, mga developer, kliyente, tagapamahala ng proyekto, teknikal na suporta, atbp.) tungkol sa mga pagkabigo na ito.

  10. Kapag nagse-set up ng pag-log, maaari mong tukuyin ang mga sumusunod na bagay:

    • ang lugar kung saan isusulat ang impormasyon (file, console, database, network, atbp.)
    • kung anong antas ng mga mensahe ang itatala
    • uri ng mga entry sa log
    • para sa mga file na maaari mong tukuyin: path sa file at direktoryo, laki ng file, bilang ng mga file
    • tukuyin para sa bawat indibidwal na pakete ang sarili nitong antas ng mga mensahe na isusulat sa log
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION