JavaRush /Java Blog /Random-ID /Level 34. Jawaban pertanyaan wawancara pada topik level
lichMax
Level 40
Санкт-Петербург

Level 34. Jawaban pertanyaan wawancara pada topik level

Dipublikasikan di grup Random-ID
Saya mencari situs tersebut menggunakan pencarian asli saya dan mencari semuanya menggunakan Google - tidak ada jawaban atas pertanyaan dari level ini. Mungkin saya melewatkan sesuatu, dan mereka masih ada di suatu tempat di situs ini!? Level 34. Jawaban pertanyaan wawancara tentang topik level - 1Untuk berjaga-jaga, saya lampirkan jawaban yang saya tulis sendiri: Pertanyaan untuk wawancara:
  1. Apa itu pengumpulan sampah?
  2. Kapan metode ini dipanggil finalize?
  3. Apa yang terjadi jika finalizepengecualian terjadi pada suatu metode?
  4. Apa yang terjadi SoftReference?
  5. Apa yang terjadi WeakReference?
  6. Apa yang terjadi PhantomReference?
  7. Bagaimana cara kerjanya WeakHashMap? Di mana itu digunakan?
  8. Mengapa Anda perlu meneruskan antrian ke konstruktor PhantomReference?
  9. Mengapa Anda membutuhkan seorang logger?
  10. Pengaturan logger apa yang Anda ketahui?
Jawabanku:
  1. Ini adalah mekanisme untuk menghancurkan objek yang tidak diperlukan. Benda yang tidak dibutuhkan adalah benda yang tidak terpakai. Ada dua cara untuk menemukan objek tersebut: penghitungan referensi dan penelusuran. Dalam kasus pertama, setiap objek dikaitkan dengan variabel yang menyimpan jumlah referensi ke objek tersebut. Jika angka ini turun menjadi nol, maka benda tersebut dianggap mati. Dalam kasus kedua, pengumpul sampah mengikuti referensi objek dari titik akar hingga akhir (hingga nilai nol), melintasi seluruh pohon ini. Benda yang tidak dapat dijangkau dari titik akarnya dianggap mati. Titik akar adalah semua thread aktif, metode utama, argumen metode main(), serta semua variabel statis kelas tempat metode tersebut berada main().

    Menentukan benda mana yang layak untuk dimusnahkan hanyalah bagian pertama dari tugas pemulung. Bagian kedua sebenarnya menghapusnya dan bekerja dengan memori. Pendekatan hybrid digunakan di sini. Semua memori yang tersedia untuk objek dibagi menjadi tiga area: area objek muda, area objek lama, dan area objek permanen (ini adalah kelas, metadata, string internal, dll.). Area pertama dibagi menjadi tiga subarea lagi: Eden dan ruang penyelamat 1 dan 2. Eden menyimpan semua objek yang baru dibuat. Dua zona sisanya menyimpan benda-benda yang selamat dari pengumpulan sampah terakhir. Pengumpul sampah mengolah seluruh area (area benda muda) sebagai berikut. Selama pengumpulan sampah berikutnya, dia menemukan benda hidup di area Eden dan menyalinnya ke area kedua yang selamat. Setelah itu, ia juga mencari benda-benda hidup di area pertama dan menyalinnya ke area kedua yang selamat, atau, jika sudah cukup “tua”, ke area generasi lama. Setelah itu, dia membersihkan area Eden dan area pertama yang selamat. Selanjutnya, ia menganggap wilayah penyintas kedua adalah yang pertama. Dan itu saja, pengumpulan sampah di area ini berakhir.

    Для второй области сборка мусора идёт несколько по-другому. Там есть одна большая область, она ни на что не делится, но сборщик мусора все живые 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. Seorang logger diperlukan untuk menyimpan informasi tentang perilaku program, serta beberapa statusnya. Dapat digunakan untuk debugging dan mengidentifikasi kesalahan dan kegagalan program. Logger juga memungkinkan pengembang menerima umpan balik dari programnya saat program sedang berjalan. Selain itu, jika terjadi kegagalan kritis, logger dapat dengan cepat memberi tahu orang yang tepat (misalnya, pengembang, klien, manajer proyek, dukungan teknis, dll.) tentang kegagalan ini.

  10. Saat menyiapkan logging, Anda dapat menentukan hal-hal berikut:

    • tempat di mana informasi akan ditulis (file, konsol, database, jaringan, dll.)
    • pesan tingkat apa yang akan direkam
    • jenis entri log
    • untuk file, Anda dapat menentukan: jalur ke file dan direktori, ukuran file, jumlah file
    • tentukan untuk setiap paket individu tingkat pesannya sendiri yang akan ditulis ke log
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION