JavaRush /Blog Java /Random-MS /Aras 34. Jawapan kepada soalan temu bual mengenai topik a...
lichMax
Tahap
Санкт-Петербург

Aras 34. Jawapan kepada soalan temu bual mengenai topik aras

Diterbitkan dalam kumpulan
Saya mencari tapak menggunakan carian asli saya dan mencari segala-galanya menggunakan Google - tiada jawapan kepada soalan dari peringkat ini. Mungkin saya terlepas sesuatu, dan mereka masih berada di sini di suatu tempat di tapak!? Tahap 34. Jawapan kepada soalan temu bual mengenai topik tahap - 1Untuk berjaga-jaga, saya lampirkan jawapan yang saya tulis untuk diri saya sendiri: Soalan untuk temu duga:
  1. Apakah pengumpulan sampah?
  2. Bilakah kaedah itu dipanggil finalize?
  3. Apakah yang berlaku jika finalizepengecualian berlaku dalam kaedah?
  4. Apa yang berlaku SoftReference?
  5. Apa yang berlaku WeakReference?
  6. Apa yang berlaku PhantomReference?
  7. Bagaimanakah ia berfungsi WeakHashMap? Di mana ia digunakan?
  8. Mengapa anda perlu menghantar baris gilir kepada pembina PhantomReference?
  9. Mengapa anda memerlukan pembalak?
  10. Apakah tetapan logger yang anda tahu?
Jawapan saya:
  1. Ini adalah mekanisme untuk memusnahkan objek yang tidak diperlukan. Objek yang tidak diperlukan adalah objek yang tidak digunakan. Terdapat dua cara untuk mencari objek tersebut: pengiraan rujukan dan pengesanan. Dalam kes pertama, setiap objek dikaitkan dengan pembolehubah yang menyimpan bilangan rujukan kepada objek ini. Jika nombor ini turun kepada sifar, maka objek itu dianggap mati. Dalam kes kedua, pemungut sampah mengikuti rujukan objek dari titik akar hingga ke penghujung (sehingga nilai nol), melintasi keseluruhan pokok ini. Objek yang tidak dapat dicapai dari titik akar dianggap mati. Titik akar ialah semua utas aktif, kaedah utama, hujah kaedah main(), serta semua pembolehubah statik kelas di mana kaedah itu terletak main().

    Menentukan objek yang layak untuk dimusnahkan hanyalah bahagian pertama tugas pemungut sampah. Bahagian kedua sebenarnya memadamkannya dan berfungsi dengan ingatan. Pendekatan hibrid digunakan di sini. Semua memori yang tersedia untuk objek dibahagikan kepada tiga kawasan: kawasan objek muda, kawasan objek lama dan kawasan objek kekal (ini adalah kelas, metadata, rentetan interned, dll.). Kawasan pertama dibahagikan kepada tiga lagi subarea: Eden dan ruang suvivor 1 dan 2. Eden menyimpan semua objek yang baru dicipta. Baki dua zon menyimpan objek yang terselamat daripada kutipan sampah terakhir. Pengumpul sampah berfungsi dengan keseluruhan kawasan ini (kawasan objek muda) seperti berikut. Semasa pengumpulan sampah seterusnya, dia menjumpai objek hidup di kawasan Eden dan menyalinnya ke kawasan kedua yang terselamat. Selepas ini, dia juga mencari objek hidup di kawasan pertama dan menyalinnya sama ada ke kawasan kedua yang terselamat, atau, jika mereka sudah cukup "tua", ke kawasan generasi lama. Selepas itu, dia membersihkan kawasan Eden dan kawasan pertama yang terselamat. Seterusnya, dia menganggap kawasan kedua yang terselamat adalah yang pertama. Dan itu sahaja, kutipan sampah tamat untuk kawasan ini.

    Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые 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. Pembalak diperlukan untuk menyimpan maklumat tentang tingkah laku program, serta beberapa keadaannya. Boleh digunakan untuk nyahpepijat dan mengenal pasti ralat dan kegagalan program. Pembalak juga membenarkan pembangun menerima maklum balas daripada programnya semasa ia sedang berjalan. Di samping itu, sekiranya berlaku kegagalan kritikal, pembalak boleh memberitahu orang yang betul dengan cepat (contohnya, pembangun, pelanggan, pengurus projek, sokongan teknikal, dll.) tentang kegagalan ini.

  10. Apabila menyediakan pengelogan, anda boleh menentukan perkara berikut:

    • tempat di mana maklumat akan ditulis (fail, konsol, pangkalan data, rangkaian, dll.)
    • apakah tahap mesej yang akan direkodkan
    • jenis catatan log
    • untuk fail yang anda boleh tentukan: laluan ke fail dan direktori, saiz fail, bilangan fail
    • tentukan untuk setiap pakej individu tahap mesejnya sendiri yang akan ditulis pada log
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION