JavaRush /Java Blog /Random-ID /Rehat kopi #60. Cara kerja pengumpulan sampah di Java (JV...

Rehat kopi #60. Cara kerja pengumpulan sampah di Java (JVM). 15 pertanyaan penting tentang Spring dalam wawancara teknis

Dipublikasikan di grup Random-ID

Cara kerja pengumpulan sampah di Java (JVM)

Sumber: DZone

Proses pengumpulan sampah di Jawa

Pengumpulan sampah Java secara otomatis mengalokasikan dan mengosongkan memori, sehingga pengembang tidak perlu menulis program terpisah untuk mengelola memori, yang merupakan salah satu manfaat utama pemrograman di Java. Setiap kali program Java dijalankan di JVM, objek dibuat di heap dan mewakili sebagian memori yang dialokasikan untuk program tersebut. Seiring waktu, beberapa item tidak lagi dibutuhkan. Pengumpul sampah menemukan benda-benda yang tidak terpakai ini dan membuangnya untuk mengosongkan memori. Rehat kopi #61.  Cara kerja pengumpulan sampah di Java (JVM).  15 pertanyaan penting tentang Spring dalam wawancara teknis - 1Pengumpul sampah, setelah mengevaluasi tumpukan memori, akan menentukan objek mana yang digunakan dan mana yang tidak, dan menghapus objek yang tidak digunakan. Objek yang digunakan atau direferensikan berarti bahwa beberapa bagian dari program Anda masih menyimpan penunjuk ke objek tersebut. Jika suatu objek tidak lagi digunakan atau tidak lagi direferensikan, maka objek tersebut tidak lagi direferensikan oleh bagian mana pun dari program. Dengan demikian, memori yang digunakan oleh objek yang tidak direferensikan dapat dibebaskan dengan melakukan pengumpulan sampah. Rehat kopi #61.  Cara kerja pengumpulan sampah di Java (JVM).  15 pertanyaan penting tentang Spring dalam wawancara teknis - 2Membebaskan memori dapat dijelaskan dengan tiga proses utama:
  1. Menandai.
  2. Penghapusan biasa.
  3. Penghapusan dengan pemadatan.
Penandaan adalah proses mengidentifikasi bagian memori yang digunakan dan tidak digunakan oleh pengumpul sampah. Pelabelan biasanya merupakan langkah pertama. Penghapusan normal adalah proses menghapus objek yang tidak direferensikan, meninggalkan objek dan pointer yang direferensikan di ruang kosong. Penghapusan pemadatan - Selain menghapus objek yang tidak direferensikan, ini juga memadatkan sisa objek yang direferensikan, memindahkan objek bersama-sama untuk membuat alokasi memori baru menjadi lebih mudah dan cepat.

Memori Tumpukan JVM

Rehat kopi #61.  Cara kerja pengumpulan sampah di Java (JVM).  15 pertanyaan penting tentang Spring dalam wawancara teknis - 3

Generasi muda

Objek yang baru dibuat dimulai pada Generasi Muda. Disebut juga pembibitan karena benda-benda baru mulai hidup di sini. Generasi Muda dibagi menjadi Eden Space, tempat semua objek baru dimulai, dan dua Survivor Spaces, tempat objek dipindahkan keluar dari Eden setelah bertahan dalam satu siklus pengumpulan sampah. Mereka menyebabkan pengumpulan sampah ulang ketika benda-benda dikumpulkan oleh pemulung Generasi Muda. Eden Space Semua objek baru pertama kali diciptakan di Eden Space. Pengumpulan sampah kecil akan diaktifkan ketika mencapai ambang batas yang ditentukan oleh JVM. Objek yang disebutkan dipindahkan dari Eden Space ke save space pertama ('Eden' dan 'from' -> 'to'). Objek yang tidak direferensikan dihapus saat Eden Space dibersihkan. Survivor 0 (S0) dan Survivor 1 (S1) Kedua kolom survivor (Dari dan ke) mulai kosong. Ketika pengumpulan sampah terjadi lagi, semua objek yang direferensikan dipindahkan ke ruang yang tersisa. Ketika pengumpulan sampah selesai, tempat (nama) penyintas "dari" dan "ke" ditukar. Jika sebelumnya S1 pengumpulan sampah berperan “ke”, kini S1 sudah penuh dan menjadi “dari”. Dengan demikian, jika S0 kosong maka akan menjadi “ke”.

Generasi Tua

Setelah pengumpulan sampah kecil, ketika objek usang mencapai ambang usia tertentu (ambang batas default untuk JVM modern disetel ke 15 siklus pengumpulan sampah), objek tersebut, bersama dengan objek berumur panjang, berpindah dari generasi muda ke generasi tua. Ketika pemulung kecil terus bermunculan, benda-benda terus berpindah ke ruang Generasi Lama, ruang tersebut akan mulai terisi dan pengumpulan sampah besar-besaran akan terjadi. Pengumpulan sampah dasar terjadi ketika benda dikumpulkan oleh pengumpul sampah Generasi Lama. Rehat kopi #61.  Cara kerja pengumpulan sampah di Java (JVM).  15 pertanyaan penting tentang Spring dalam wawancara teknis - 4

Generasi Permanen

Metadata seperti kelas dan metode disimpan dalam Generasi Permanen. Kelas yang tidak lagi digunakan dapat dihapus oleh pengumpul sampah. Selama pengumpulan sampah penuh, benda-benda yang tidak terpakai dari semua generasi dikumpulkan.Rehat kopi #61.  Cara kerja pengumpulan sampah di Java (JVM).  15 pertanyaan penting tentang Spring dalam wawancara teknis - 5

Jenis Pengumpulan Sampah

Pengumpulan sampah yang membersihkan berbagai bagian dalam tumpukan sering disebut pengumpulan sampah Kecil, Besar, dan Penuh. Namun karena istilah Minor, Major, dan Full banyak digunakan tanpa definisi yang tepat, kita akan melihat penjelasan dari semua jenis pengumpulan sampah tersebut.

Pengumpulan Sampah Kecil

Pengumpulan sampah dari ruang Generasi Muda disebut Pengumpulan Sampah Kecil. Jenis build ini selalu terpicu ketika JVM tidak dapat mengalokasikan ruang untuk objek baru, yaitu ketika Eden Space penuh. Dengan demikian, semakin tinggi tingkat seleksi, maka semakin sering terjadi Pengumpulan Sampah Kecil.

Pengumpulan Sampah Besar

Pengumpulan Sampah Besar membersihkan Tenured (ruang lama). Karena Generasi Tua lebih besar, pertemuan terjadi lebih jarang dibandingkan Generasi Muda. Ketika benda-benda dari Generasi Lama menghilang, kita mengatakan bahwa "pengumpulan sampah besar-besaran" telah terjadi. Kolektor Generasi Lama akan mencoba memprediksi kapan ia harus mulai mengoleksi untuk menghindari kegagalan promosi dari Generasi Muda. Kolektor memantau ambang batas pengisian Generasi Lama dan mulai mengumpulkan ketika ambang batas tersebut terlampaui. Jika ambang batas ini tidak cukup untuk memenuhi persyaratan promosi, "Pengumpulan Sampah Penuh" diluncurkan.

Pengumpulan Sampah Penuh

Pengumpulan Sampah Penuh membersihkan seluruh ruangan—baik ruang muda maupun tua. Banyak orang yang bingung antara Major (hanya generasi LAMA) dan Full GC (Young + OLD (Heap)). Pengumpulan Sampah Lengkap meliputi promosi seluruh benda hidup dari generasi muda ke generasi tua setelah dirakit dan dipadatkan dari generasi tua. Pengumpulan sampah secara penuh akan menjadi perhentian Stop-the-World. Ini memastikan bahwa objek baru tidak dialokasikan dan objek tidak menjadi tidak dapat diakses saat kolektor sedang berjalan.

15 pertanyaan penting tentang Spring dalam wawancara teknis

Sumber: Dev.to Spring Framework adalah kerangka kerja universal untuk platform Java. Fitur intinya dapat digunakan oleh aplikasi Java apa pun, dan terdapat ekstensi untuk membuat aplikasi web berbasis Java EE. Berikut adalah daftar pertanyaan dan jawaban wawancara terkait Spring coding. Kami berharap mereka membantu Anda mempersiapkan wawancara teknis Anda pada tahun 2021.Rehat kopi #61.  Cara kerja pengumpulan sampah di Java (JVM).  15 pertanyaan penting tentang Spring dalam wawancara teknis - 6

1. Apa itu Musim Semi?

Jawab: Spring adalah kerangka open source untuk mengembangkan aplikasi Java. Fitur inti Spring Framework dapat digunakan untuk mengembangkan aplikasi Java apa pun, dan ekstensi juga tersedia untuk membuat aplikasi web berdasarkan platform Java EE. Framework Spring bertujuan untuk membuat J2EE lebih mudah digunakan dalam pengembangan dan meningkatkan praktik pemrograman dengan memasukkan model berbasis POJO (Plain Old Java Object).

2. Apa cakupan default kacang dalam kerangka Spring?

Jawab: Cakupan default kacang adalah Singleton (pola desain).

3. Apa itu kabel Bean?

Jawaban: Pengkabelan kacang adalah tindakan menciptakan asosiasi antara komponen aplikasi (kacang) dalam wadah Pegas.

4. Apa itu Keamanan Musim Semi?

Jawab: Spring Security adalah modul terpisah dari kerangka Spring yang berfokus pada penyediaan metode otentikasi dan otorisasi untuk aplikasi Java. Ini juga memperbaiki sebagian besar kerentanan keamanan umum seperti serangan CSRF. Untuk menggunakan Spring Security di aplikasi web, Anda bisa memulai dengan anotasi sederhana: @EnableWebSecurity.

5. Apa yang terkandung dalam definisi bean?

Jawaban: Definisi kacang berisi informasi yang disebut metadata konfigurasi yang perlu diketahui oleh container sebagai berikut:
  • Cara membuat kacang;
  • Detail siklus hidup kacang;
  • ketergantungan kacang.

6. Apa itu Sepatu Musim Semi?

Jawab: Spring Boot adalah proyek yang menyediakan serangkaian kerangka kerja yang telah dikonfigurasi sebelumnya untuk mengurangi konfigurasi boilerplate sehingga Anda dapat mengaktifkan dan menjalankan aplikasi Spring dengan kode minimal.

7. Apa itu DispatcherServlet dan kegunaannya?

Jawab: DispatcherServlet adalah implementasi pola desain Front Controller yang menangani semua permintaan web masuk ke aplikasi Spring MVC. Pola Pengontrol Depan (Pola Desain Aplikasi Perusahaan) adalah pola umum dalam aplikasi web yang tugasnya mengambil seluruh permintaan dan merutekannya ke berbagai komponen aplikasi untuk pemrosesan sebenarnya. Di Spring MVC DispatcherServlet digunakan untuk menemukan pengontrol yang tepat untuk menangani permintaan. Hal ini dilakukan dengan menggunakan pemetaan handler: misalnya, anotasi @RequestMapping.

8. Apakah spring-mvc.jar diperlukan di classpath atau merupakan bagian dari spring-core?

Jawab: Spring-mvc.jar adalah bagian dari spring-core, yang berarti jika Anda ingin menggunakan framework Spring MVC di proyek Java Anda, maka Anda harus menyertakan spring-mvc.jar di classpath aplikasi Anda. Pada aplikasi web Java, spring-mvc.jar biasanya ditempatkan di folder /WEB-INF/lib.

9. Apa keuntungan menggunakan Spring?

Jawaban: Di bawah ini adalah daftar beberapa manfaat menggunakan Spring Framework:
  • Ringan – Pegas relatif ringan dalam hal ukuran dan transparansi. Versi dasar Spring Framework berukuran sekitar 2 MB.
  • Inversi kontrol (IOC) - Kopling longgar dicapai pada Pegas menggunakan teknik kontrol inversi. Objek menyediakan dependensinya alih-alih membuat atau mencari objek dependen.
  • Berorientasi Aspek - Spring mendukung pemrograman berorientasi aspek dan memastikan pengembangan yang konsisten dengan memisahkan logika bisnis aplikasi dari layanan sistem.
  • Kontainer - Spring Container membuat objek, mengikatnya, mengonfigurasinya, dan mengelolanya mulai dari pembuatan hingga pembuangan.
  • Kerangka MVC - Kerangka web pegas adalah kerangka web MVC yang dirancang dengan baik yang memberikan alternatif terhadap kerangka web seperti Struts atau kerangka web lain yang terlalu dirancang atau kurang populer.
  • Manajemen Transaksi - Spring memiliki antarmuka manajemen transaksi yang konsisten yang dapat diskalakan ke transaksi lokal (misalnya menggunakan database tunggal) atau transaksi global (misalnya menggunakan JTA).
  • Penanganan Pengecualian - Spring menyediakan API yang mudah digunakan untuk mengubah pengecualian khusus teknologi (seperti yang diberikan oleh JDBC, Hibernate, atau JDO) menjadi pengecualian yang konsisten dan tidak dicentang.

10. Apa itu kacang musim semi?

Jawab: Spring beans adalah contoh objek yang dikelola oleh Spring Container. Mereka dibuat dan dihubungkan oleh kerangka dan ditempatkan dalam “kantong benda” (wadah) dimana Anda nantinya dapat mengambilnya. Pengkabelan inilah yang merupakan injeksi ketergantungan. Ini berarti Anda cukup mengatakan, “Saya membutuhkan benda ini,” dan kerangka kerja akan mengikuti aturan tertentu untuk mendapatkan objek tersebut.

11. Apa tujuan dari modul Core Container?

Jawab: Kontainer kernel menyediakan fungsionalitas inti kerangka Spring. Komponen utama wadah utama adalah BeanFactory, yang merupakan implementasi dari pola Pabrik. BeanFactory menggunakan kontrol Inversi untuk memisahkan konfigurasi dan ketergantungan spesifikasi aplikasi dari kode aplikasi sebenarnya.

12. Apa yang dimaksud dengan Konteks Penerapan?

Jawaban: Sekilas konteks aplikasinya sama dengan bean factory. Keduanya memuat definisi kacang, menggabungkan kacang, dan mendistribusikannya berdasarkan permintaan. Tapi itu juga menyediakan:
  • Alat untuk menyelesaikan pesan teks, termasuk dukungan untuk internasionalisasi.
  • Cara umum untuk mengunduh sumber file.
  • Acara untuk kacang yang terdaftar sebagai pendengar.

13. Bagaimana cara mengintegrasikan Java Server Faces (JSF) dengan Spring?

Jawaban: JSF dan Spring memang berbagi beberapa fitur yang sama, terutama di bidang layanan Inversion of Control. Dengan mendeklarasikan kacang yang dikelola JSF di file konfigurasi face-config.xml, Anda mengizinkan FacesServlet untuk membuat instance kacang tersebut saat startup. Halaman JSF Anda memiliki akses ke kacang ini dan semua propertinya. JSF dan Spring dapat diintegrasikan dalam dua cara: DelegatingVariableResolver : Spring dilengkapi dengan penyelesai variabel JSF yang memungkinkan Anda menggunakan JSF dan Spring secara bersamaan. DelegatingVariableResolver pertama-tama mendelegasikan pencarian nilai ke penerjemah default implementasi JSF yang mendasarinya, dan kemudian ke "konteks bisnis" dari Spring WebApplicationContext. Hal ini memudahkan untuk memasukkan dependensi ke dalam kacang yang dikelola JSF. FacesContextUtils : VariableResolver khusus berfungsi dengan baik saat memetakan propertinya ke kacang di Faces-config.xml. Namun jika Anda perlu mengambil gambar, kelas FacesContextUtils membuatnya mudah. Ini mirip dengan WebApplicationContextUtils hanya saja ia menerima parameter FacesContext daripada parameter ServletContext.
ApplicationContext ctx = FacesContextUtils.getWebApplicationContext (FacesContext.getCurrentInstance ());

14. Apa itu kerangka kerja Spring MVC?

Jawab: Kerangka kerja Spring Web MVC menyediakan arsitektur pengontrol tampilan model dan komponen siap pakai yang dapat digunakan untuk mengembangkan aplikasi web yang fleksibel dan digabungkan secara longgar. Pola MVC menghasilkan pemisahan berbagai aspek aplikasi (logika input, logika bisnis, dan logika UI) sekaligus memungkinkan penggabungan yang longgar di antara elemen-elemen ini.

15. Bagaimana cara kerja penanganan event di Musim Semi?

Jawaban: Pemrosesan di ApplicationContext disediakan melalui kelas ApplicationEvent dan antarmuka ApplicationListener . Artinya, jika suatu bean mengimplementasikan ApplicationListener , maka setiap kali ApplicationEvent dipublikasikan ke ApplicationContext , bean tersebut didaftarkan. Terima kasih telah membaca dan semoga sukses dengan wawancara teknis Anda!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION