JavaRush /Java blogi /Random-UZ /34-daraja. Daraja mavzusi bo'yicha suhbat savollariga jav...
lichMax
Daraja
Санкт-Петербург

34-daraja. Daraja mavzusi bo'yicha suhbat savollariga javoblar

Guruhda nashr etilgan
Men o'zimning mahalliy qidiruvimdan foydalanib saytni qidirdim va hamma narsani Google yordamida qidirdim - bu darajadagi savollarga javob yo'q. Ehtimol, men nimanidir o'tkazib yuborgandirman va ular hali ham saytdadir!? 34-daraja. Daraja mavzusi bo'yicha suhbat savollariga javoblar - 1Har holda, men o'zim uchun yozgan javoblarimni ilova qilaman: Intervyu uchun savollar:
  1. Axlat yig'ish nima?
  2. Usul qachon chaqiriladi finalize?
  3. finalizeAgar usulda istisno yuzaga kelsa nima bo'ladi ?
  4. Nima bo'ldi SoftReference?
  5. Nima bo'ldi WeakReference?
  6. Nima bo'ldi PhantomReference?
  7. Bu qanday ishlaydi WeakHashMap? U qayerda ishlatiladi?
  8. Nima uchun konstruktorga navbatda o'tishingiz kerak PhantomReference?
  9. Nega sizga logger kerak?
  10. Qaysi logger sozlamalarini bilasiz?
Mening javoblarim:
  1. Bu keraksiz narsalarni yo'q qilish mexanizmi. Keraksiz ob'ektlar - foydalanilmaydigan ob'ektlar. Bunday ob'ektlarni topishning ikki yo'li mavjud: havolalarni hisoblash va kuzatish. Birinchi holda, har bir ob'ekt ushbu ob'ektga murojaatlar sonini saqlaydigan o'zgaruvchi bilan bog'lanadi. Agar bu raqam nolga tushsa, u holda ob'ekt o'lik hisoblanadi. Ikkinchi holda, axlat yig'uvchi ob'ekt havolalarini ildiz nuqtalaridan oxirigacha (nol qiymatgacha) kuzatib, butun daraxt bo'ylab o'tadi. Ildiz nuqtalaridan yeta olmaydigan ob'ektlar o'lik hisoblanadi. Ildiz nuqtalari barcha faol iplar, asosiy usul, usulning argumentlari main(), shuningdek, usul joylashgan sinfning barcha statik o'zgaruvchilari main().

    Qaysi ob'ektlarni yo'q qilishga yaroqliligini aniqlash axlat yig'uvchining ishining faqat birinchi qismidir. Ikkinchi qism aslida ularni o'chirish va xotira bilan ishlashdir. Bu erda gibrid yondashuv qo'llaniladi. Ob'ektlar uchun mavjud bo'lgan barcha xotira uchta hududga bo'lingan: yosh ob'ektlar maydoni, eski ob'ektlar maydoni va doimiy ob'ektlar maydoni (bular sinflar, metama'lumotlar, internalangan satrlar va boshqalar). Birinchi hudud yana uchta kichik hududga bo'lingan: Eden va suvivor maydoni 1 va 2. Eden barcha yangi yaratilgan ob'ektlarni saqlaydi. Qolgan ikkita zonada oxirgi axlat yig'ishdan omon qolgan ob'ektlar saqlanadi. Axlat yig'uvchi butun maydon (yosh ob'ektlar maydoni) bilan quyidagicha ishlaydi. Keyingi axlat yig'ish paytida u Adan hududida tirik narsalarni topadi va ularni ikkinchi omon qolgan hududga ko'chiradi. Shundan so'ng, u birinchi hududda tirik narsalarni qidiradi va ularni omon qolganlarning ikkinchi maydoniga yoki agar ular allaqachon "eski" bo'lsa, eski avlod hududiga ko'chiradi. Keyin u Adan hududini va birinchi omon qolgan hududni tozalaydi. Keyinchalik, u omon qolganlarning ikkinchi maydonini birinchi deb hisoblaydi. Va bu, bu hudud uchun axlat yig'ish tugaydi.

    Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые 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. Ro'yxatga oluvchi dasturning xatti-harakatlari, shuningdek uning ba'zi holatlari haqidagi ma'lumotlarni saqlash uchun kerak. Dastur xatolarini va nosozliklarini tuzatish va aniqlash uchun ishlatilishi mumkin. Ro'yxatga oluvchi, shuningdek, ishlab chiquvchiga o'z dasturi ishlayotgan vaqtda uning fikr-mulohazalarini olish imkonini beradi. Bundan tashqari, muhim nosozliklar yuz berganda, logger ushbu nosozliklar haqida kerakli odamlarni (masalan, ishlab chiquvchilar, mijozlar, loyiha menejerlari, texnik yordam va boshqalar) tezda xabardor qilishi mumkin.

  10. Jurnalga kirishni sozlashda siz quyidagi narsalarni belgilashingiz mumkin:

    • ma'lumot yoziladigan joy (fayl, konsol, ma'lumotlar bazasi, tarmoq va boshqalar).
    • qaysi darajadagi xabarlar yoziladi
    • jurnal yozuvlari turi
    • fayllar uchun siz belgilashingiz mumkin: fayl va katalogga yo'l, fayl hajmi, fayllar soni
    • har bir alohida paket uchun jurnalga yoziladigan xabarlar darajasini belgilang
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION