JavaRush /Blog Java /Random-MS /Rehat kopi #60. Cara pengumpulan sampah berfungsi dalam J...

Rehat kopi #60. Cara pengumpulan sampah berfungsi dalam Java (JVM). 15 soalan penting tentang Spring dalam temu bual teknikal

Diterbitkan dalam kumpulan

Cara pengumpulan sampah berfungsi dalam Java (JVM)

Sumber: DZone

Proses pengumpulan sampah di Jawa

Pengumpulan sampah Java secara automatik memperuntukkan dan membebaskan memori, jadi pembangun tidak perlu menulis program berasingan untuk mengurus memori, yang merupakan salah satu faedah utama pengaturcaraan di Java. Setiap kali program Java berjalan pada JVM, objek dicipta pada timbunan dan mewakili sebahagian daripada memori yang diperuntukkan kepada atur cara. Lama kelamaan, beberapa item tidak lagi diperlukan. Pengumpul sampah menjumpai objek yang tidak digunakan ini dan mengeluarkannya untuk mengosongkan ingatan. Rehat kopi #61.  Cara pengumpulan sampah berfungsi dalam Java (JVM).  15 soalan penting tentang Spring dalam temu bual teknikal - 1Pengumpul sampah, selepas menilai timbunan memori, akan menentukan objek yang sedang digunakan dan yang tidak, dan mengalih keluar objek yang tidak digunakan. Objek yang digunakan atau dirujuk bermakna bahawa sesetengah bahagian program anda masih mengekalkan penunjuk ke objek itu. Jika objek tidak lagi digunakan atau tidak lagi dirujuk, maka ia tidak lagi akan dirujuk oleh mana-mana bahagian program. Oleh itu, memori yang digunakan oleh objek yang tidak dirujuk boleh dibebaskan dengan melakukan pengumpulan sampah. Rehat kopi #61.  Cara pengumpulan sampah berfungsi dalam Java (JVM).  15 soalan penting tentang Spring dalam temu bual teknikal - 2Membebaskan ingatan boleh diterangkan oleh tiga proses utama:
  1. Menanda.
  2. Penyingkiran biasa.
  3. Penyingkiran dengan pemadatan.
Penandaan ialah proses mengenal pasti bahagian ingatan yang sedang dan tidak digunakan oleh pemungut sampah. Pelabelan biasanya merupakan langkah pertama. Pemadaman biasa ialah proses memadam objek yang tidak dirujuk, meninggalkan objek yang dirujuk dan penunjuk di ruang kosong. Pemadaman pemadatan - Selain memadamkan objek yang tidak dirujuk, ia memampatkan objek rujukan yang tinggal, menggerakkan objek bersama-sama untuk menjadikan peruntukan memori baharu lebih mudah dan lebih pantas.

Memori Timbunan JVM

Rehat kopi #61.  Cara pengumpulan sampah berfungsi dalam Java (JVM).  15 soalan penting tentang Spring dalam temu bual teknikal - 3

Generasi muda

Objek yang baru dicipta bermula dalam Generasi Muda. Ia juga dipanggil nurseri kerana objek baru mula hidup di sini. Generasi Muda dibahagikan kepada Eden Space, tempat semua objek baharu bermula, dan dua Survivor Spaces, tempat objek dialihkan keluar dari Eden selepas bertahan dalam satu kitaran pengumpulan sampah. Mereka menyebabkan pengumpulan semula sampah apabila objek dikumpul oleh pemungut sampah Generasi Muda. Eden Space Semua objek baharu pertama kali dicipta di Eden Space. Pengumpulan sampah kecil akan terbakar apabila ia mencapai ambang yang ditentukan oleh JVM. Objek yang disebutkan dialihkan dari Angkasa Eden ke ruang penjimatan pertama ('Eden' dan 'dari' -> 'ke'). Objek yang tidak dirujuk dialih keluar apabila Eden Space dikosongkan. Survivor 0 (S0) dan Survivor 1 (S1) Kedua-dua medan survivor (Dari dan ke) bermula kosong. Apabila kutipan sampah berlaku lagi, semua objek yang dirujuk dialihkan ke ruang yang tinggal. Apabila kutipan sampah selesai, tempat (nama) mangsa "dari" dan "ke" ditukar. Jika semasa kutipan sampah sebelum ini S1 berada dalam peranan "kepada", kini S1 penuh dan menjadi "dari". Sehubungan itu, jika S0 kosong, maka ia akan menjadi "ke".

Generasi Lama

Selepas kutipan sampah kecil, apabila objek usang mencapai ambang umur tertentu (ambang lalai untuk JVM moden ditetapkan kepada 15 kitaran kutipan sampah), mereka, bersama-sama dengan objek tahan lama, beralih daripada generasi muda kepada yang lama. Apabila pengumpul sampah kecil terus timbul, objek terus bergerak ke ruang Generasi Lama, ia akan mula penuh dan pengumpulan sampah utama akan berlaku. Pengumpulan sampah asas berlaku apabila objek dikumpul oleh pemungut sampah Generasi Lama. Rehat kopi #61.  Cara pengumpulan sampah berfungsi dalam Java (JVM).  15 soalan penting tentang Spring dalam temu bual teknikal - 4

Generasi Kekal

Metadata seperti kelas dan kaedah disimpan dalam Penjanaan Kekal. Kelas yang tidak digunakan lagi boleh dikeluarkan daripadanya oleh pemungut sampah. Semasa pengumpulan sampah penuh, objek yang tidak digunakan dari semua generasi dikumpul.Rehat kopi #61.  Cara pengumpulan sampah berfungsi dalam Java (JVM).  15 soalan penting tentang Spring dalam temu bual teknikal - 5

Jenis Pengumpulan Sampah

Pengumpulan sampah yang membersihkan pelbagai bahagian dalam timbunan sering dipanggil pengumpulan sampah Kecil, Utama dan Penuh. Tetapi oleh kerana istilah Minor, Major dan Full digunakan secara meluas tanpa definisi yang betul, kita akan melihat penjelasan semua jenis kutipan sampah ini.

Pengumpulan Sampah Kecil

Pengumpulan sampah dari ruang Generasi Muda dipanggil Pengumpulan Sampah Kecil. Binaan jenis ini sentiasa dicetuskan apabila JVM tidak dapat memperuntukkan ruang untuk objek baharu, iaitu apabila Eden Space penuh. Oleh itu, semakin tinggi kadar pemilihan, semakin kerap Kutipan Sampah Kecil berlaku.

Kutipan Sampah Utama

Pengumpulan Sampah Utama membersihkan Tenured (ruang lama). Kerana Generasi Lama lebih besar, perhimpunan berlaku kurang kerap daripada Generasi Muda. Apabila objek hilang dari Generasi Lama, kami mengatakan bahawa "pengumpulan sampah utama" telah berlaku. Pengumpul Generasi Lama akan cuba meramal bila dia perlu mula mengumpul untuk mengelakkan kegagalan promosi daripada Generasi Muda. Pengumpul memantau ambang pengisian Generasi Lama dan mula mengumpul apabila ambang itu melebihi. Jika ambang ini tidak mencukupi untuk memenuhi keperluan promosi, "Kutipan Sampah Penuh" dilancarkan.

Kutipan Sampah Penuh

Full Garbage Collection membersihkan keseluruhan kumpulan—ruang muda dan lama. Ramai orang keliru antara Major (generasi LAMA sahaja) dan GC Penuh (Muda + LAMA (Timbunan)). Pengumpulan Sampah Penuh termasuk promosi semua objek hidup dari generasi muda hingga tua selepas memasang dan memampatkan generasi lama. Kutipan sampah penuh akan menjadi persinggahan untuk Stop-the-World. Ia memastikan objek baharu tidak diperuntukkan dan objek tidak boleh diakses semasa pengumpul sedang berjalan.

15 soalan penting tentang Spring dalam temu bual teknikal

Sumber: Dev.to Spring Framework ialah rangka kerja universal untuk platform Java. Ciri terasnya boleh digunakan oleh mana-mana aplikasi Java, dan terdapat sambungan untuk mencipta aplikasi web berasaskan Java EE. Berikut ialah senarai soalan dan jawapan temu bual yang berkaitan dengan pengekodan Spring. Kami berharap mereka membantu anda membuat persediaan untuk temu duga teknikal anda pada tahun 2021.Rehat kopi #61.  Cara pengumpulan sampah berfungsi dalam Java (JVM).  15 soalan penting tentang Spring dalam temu bual teknikal - 6

1. Apakah Spring?

Jawapan: Spring ialah rangka kerja sumber terbuka untuk membangunkan aplikasi Java. Ciri teras Rangka Kerja Spring boleh digunakan untuk membangunkan sebarang aplikasi Java, dan terdapat sambungan untuk mencipta aplikasi web berdasarkan platform Java EE. Rangka kerja Spring bertujuan untuk menjadikan J2EE lebih mudah digunakan dalam pembangunan dan menambah baik amalan pengaturcaraan dengan menggabungkan model berasaskan POJO (Plain Old Java Object).

2. Apakah skop lalai bagi kacang dalam rangka kerja Spring?

Jawapan: Skop lalai kacang ialah Singleton (corak reka bentuk).

3. Apakah pendawaian Kacang?

Jawapan: Pendawaian kacang ialah tindakan mewujudkan persatuan antara komponen aplikasi (kacang) dalam bekas Spring.

4. Apakah Keselamatan Musim Bunga?

Jawapan: Spring Security ialah modul berasingan rangka kerja Spring yang memfokuskan pada penyediaan kaedah pengesahan dan kebenaran kepada aplikasi Java. Ia juga membetulkan kelemahan keselamatan yang paling biasa seperti serangan CSRF. Untuk menggunakan Spring Security dalam aplikasi web, anda boleh mulakan dengan anotasi mudah: @EnableWebSecurity.

5. Apakah yang terkandung dalam definisi kacang?

Jawapan: Definisi kacang mengandungi maklumat yang dipanggil metadata konfigurasi yang bekas perlu mengetahui perkara berikut:
  • Cara membuat kacang;
  • Butiran kitaran hayat kacang;
  • kebergantungan kacang.

6. Apakah Spring Boot?

Jwb: Spring Boot ialah projek yang menyediakan set rangka kerja pra-konfigurasi untuk mengurangkan konfigurasi boilerplate supaya anda boleh mendapatkan aplikasi Spring dan berjalan dengan kod minimum.

7. Apakah DispatcherServlet dan untuk apa ia digunakan?

Jawapan: DispatcherServlet ialah pelaksanaan corak reka bentuk Pengawal Hadapan yang mengendalikan semua permintaan web masuk ke aplikasi Spring MVC. Corak Pengawal Hadapan (Corak Reka Bentuk Aplikasi Perusahaan) ialah corak biasa dalam aplikasi web yang tugasnya adalah untuk mengambil keseluruhan permintaan dan menghalakannya ke pelbagai komponen aplikasi untuk pemprosesan sebenar. Dalam Spring MVC DispatcherServlet digunakan untuk mencari pengawal yang betul untuk mengendalikan permintaan. Ini dilakukan menggunakan pemetaan pengendali: contohnya, anotasi @RequestMapping.

8. Adakah spring-mvc.jar diperlukan pada classpath atau adakah ia sebahagian daripada spring-core?

Jawapan: Spring-mvc.jar ialah sebahagian daripada spring-core, yang bermaksud bahawa jika anda ingin menggunakan rangka kerja Spring MVC dalam projek Java anda, maka anda mesti memasukkan spring-mvc.jar dalam classpath aplikasi anda. Dalam aplikasi web Java, spring-mvc.jar biasanya diletakkan dalam folder /WEB-INF/lib.

9. Apakah faedah menggunakan Spring?

Jawapan: Di bawah ialah senarai beberapa faedah menggunakan Rangka Kerja Spring:
  • Ringan – Spring adalah agak ringan apabila melibatkan saiz dan ketelusan. Versi asas Rangka Kerja Spring ialah kira-kira 2 MB.
  • Penyongsangan kawalan (IOC) - Gandingan longgar dicapai dalam Spring menggunakan penyongsangan teknik kawalan. Objek menyediakan kebergantungan mereka dan bukannya mencipta atau mencari objek bergantung.
  • Berorientasikan Aspek - Spring menyokong pengaturcaraan berorientasikan aspek dan memastikan pembangunan yang konsisten dengan mengasingkan logik perniagaan aplikasi daripada perkhidmatan sistem.
  • Bekas - Bekas Spring mencipta objek, mengikatnya bersama, mengkonfigurasinya dan mengurusnya dari penciptaan hingga pelupusan.
  • Rangka Kerja MVC - Rangka kerja web Spring ialah rangka kerja web MVC yang direka dengan baik yang menyediakan alternatif kepada rangka kerja web seperti Struts atau rangka kerja web lain yang terlalu direka bentuk atau kurang popular.
  • Pengurusan Transaksi - Spring mempunyai antara muka pengurusan transaksi yang konsisten yang boleh skala kepada transaksi tempatan (cth menggunakan pangkalan data tunggal) atau transaksi global (cth menggunakan JTA).
  • Pengendalian Pengecualian - Spring menyediakan API yang mudah untuk menukar pengecualian khusus teknologi (seperti yang dilemparkan oleh JDBC, Hibernate atau JDO) kepada pengecualian yang konsisten dan tidak disemak.

10. Apakah kacang Spring?

Jwb: Kacang bunga ialah contoh objek yang diurus oleh Bekas Spring. Ia dicipta dan disambungkan oleh rangka kerja dan diletakkan dalam "beg objek" (bekas) dari mana anda boleh mendapatkannya kemudian. Pendawaian adalah apa yang membentuk suntikan pergantungan. Ini bermakna anda hanya boleh berkata, "Saya perlukan perkara ini," dan rangka kerja akan mengikut peraturan tertentu untuk mendapatkan objek itu.

11. Apakah tujuan modul Bekas Teras?

Jawapan: Bekas kernel menyediakan fungsi teras rangka kerja Spring. Komponen utama bekas utama ialah BeanFactory, pelaksanaan corak Kilang. BeanFactory menggunakan kawalan Penyongsangan untuk memisahkan kebergantungan konfigurasi dan spesifikasi aplikasi daripada kod aplikasi sebenar.

12. Apakah Konteks Aplikasi?

Jawapan: Pada pandangan pertama, konteks aplikasi adalah sama seperti kilang kacang. Kedua-dua memuatkan definisi kacang, ikat kacang bersama-sama, dan edarkannya atas permintaan. Tetapi ia juga menyediakan:
  • Alat untuk menyelesaikan mesej teks, termasuk sokongan untuk pengantarabangsaan.
  • Cara biasa untuk memuatkan sumber fail.
  • Acara untuk kacang yang didaftarkan sebagai pendengar.

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

Jawapan: JSF dan Spring berkongsi beberapa ciri yang sama, terutamanya dalam bidang perkhidmatan Inversion of Control. Dengan mengisytiharkan kacang terurus JSF dalam fail konfigurasi faces-config.xml, anda membenarkan FacesServlet membuat instantiate kacang itu pada permulaan. Halaman JSF anda mempunyai akses kepada kacang ini dan semua sifatnya. JSF dan Spring boleh disepadukan dalam dua cara: DelegatingVariableResolver : Spring datang dengan penyelesai pembolehubah JSF yang membolehkan anda menggunakan JSF dan Spring bersama-sama. DelegatingVariableResolver mula-mula mewakilkan carian nilai kepada penterjemah lalai pelaksanaan JSF asas, dan kemudian kepada "konteks perniagaan" Spring WebApplicationContext. Ini memudahkan untuk menyuntik kebergantungan ke dalam kacang yang diuruskan JSF. FacesContextUtils : VariableResolver tersuai berfungsi dengan baik apabila memetakan sifatnya kepada kacang dalam faces-config.xml. Tetapi jika anda perlu menangkap kacang, kelas FacesContextUtils memudahkannya. Ia serupa dengan WebApplicationContextUtils kecuali ia menerima parameter FacesContext dan bukannya parameter ServletContext.
ApplicationContext ctx = FacesContextUtils.getWebApplicationContext (FacesContext.getCurrentInstance ());

14. Apakah rangka kerja Spring MVC?

Jwb: Rangka kerja Spring Web MVC menyediakan seni bina pengawal paparan model dan komponen pra-bina yang boleh digunakan untuk membangunkan aplikasi web yang fleksibel dan gandingan longgar. Corak MVC menghasilkan pemisahan aspek aplikasi yang berbeza (logik input, logik perniagaan dan logik UI) sambil membenarkan gandingan longgar antara elemen ini.

15. Bagaimanakah pengendalian acara berfungsi pada Musim Bunga?

Jawapan: Pemprosesan dalam ApplicationContext disediakan melalui kelas ApplicationEvent dan antara muka ApplicationListener . Iaitu, jika kacang melaksanakan ApplicationListener , maka setiap kali ApplicationEvent diterbitkan ke ApplicationContext , kacang itu didaftarkan. Terima kasih kerana membaca dan semoga berjaya dengan temu duga teknikal anda!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION