JavaRush /Java Blog /Random-TK /Kofe arakesmesi # 60 Zibil ýygnamak Java-da (JVM) nähili ...

Kofe arakesmesi # 60 Zibil ýygnamak Java-da (JVM) nähili işleýär. Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag

Toparda çap edildi

Zibil ýygnamak Java-da nähili işleýär (JVM)

Çeşme: DZone

Java-da hapa ýygnamak prosesi

Java zibil ýygnamak awtomatiki usulda ýady bölýär we boşadýar, şonuň üçin döredijiler Java programmirlemegiň esasy artykmaçlyklaryndan biri bolan ýady dolandyrmak üçin aýratyn programma ýazmaly däldirler. Her gezek Java programmasy JVM-de işledilende, üýşmeleňde obýektler döredilýär we programma bölünen ýadyň bir bölegini görkezýär. Wagtyň geçmegi bilen käbir zatlar indi zerur bolmaz. Zibil ýygnaýjy bu ulanylmadyk zatlary tapýar we ýady boşatmak üçin aýyrýar. Kofe arakesmesi # 61.  Zibil ýygnamak Java-da (JVM) nähili işleýär.  Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag - 1Zibil ýygnaýjy, ýat üýşmesine baha berenden soň, haýsy obýektleriň ulanylýandygyny we haýsysynyň ulanylmaýandygyny kesgitlär we ulanylmadyk zatlary aýyrar. Ulanylan ýa-da salgylanylýan obýekt, programmaňyzyň käbir böleginiň henizem şol obýekte görkeziji saklaýandygyny aňladýar. Eger bir obýekt indi ulanylmaýan bolsa ýa-da indi salgylanmasa, onda programmanyň haýsydyr bir bölegi salgylanmaz. Şeýlelik bilen, salgylanmadyk bir zat tarapyndan ulanylýan ýat, zibil ýygnamak arkaly boşadylyp bilner. Kofe arakesmesi # 61.  Zibil ýygnamak Java-da (JVM) nähili işleýär.  Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag - 2Oryady boşatmagy üç esasy proses bilen düşündirip bolar:
  1. Bellik.
  2. Adaty aýyrmak.
  3. Gysmak bilen aýyrmak.
Bellik, zibil ýygnaýjy tarapyndan ulanylýan we ulanylmaýan ýadyň böleklerini kesgitlemek prosesi. Etiketlemek, adatça, ilkinji ädimdir. Adaty öçürmek , salgylanmaýan obýektleri we görkezijileri boş ýerde goýmak prosesi. Dykyzlygy ýok etmek - salgylanmadyk zatlary pozmakdan başga-da, täze ýat bölünişini has aňsat we çaltlaşdyrmak üçin obýektleri birleşdirip, galan salgylanylýan zatlary gysýar.

JVM üýşmek ýady

Kofe arakesmesi # 61.  Zibil ýygnamak Java-da (JVM) nähili işleýär.  Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag - 3

Generationaş nesil

Täze döredilen zatlar Generationaş nesilde başlaýar. Çagalar bagy hem diýilýär, sebäbi bu ýerde täze zatlar ýaşap başlaýar. Generationaş nesil, ähli täze zatlaryň başlanýan ýeri bolan Eden giňişligine we ýekeje zibil ýygnamak siklinde diri galyp, Eremden göçürilýän iki sany Halas ediş giňişligine bölünýär. Objectsaş nesil zibil ýygnaýjy tarapyndan zatlar ýygnalanda, olar gaýtadan zibil ýygnamagyna sebäp bolýar. Eden giňişligi newhli täze zatlar ilkinji gezek Eden giňişliginde döredildi. Ujypsyzja zibil ýygnamak, JVM tarapyndan kesgitlenen bosaga ýetende ot alar. Objectsokarda agzalan obýektler Eden giňişliginden ilkinji halas ediş giňişligine geçirilýär ('Eden' we 'from' -> 'to'). Eden giňişligi arassalananda görkezilmedik zatlar aýrylýar. Halas ediji 0 (S0) we Survivor 1 (S1) Diri galanlaryň ikisi (From and to) meýdanlary boş başlaýar. Zibil ýygnamak ýene ýüze çykanda, ähli salgylanylýan zatlar galan ýere geçirilýär. Zibil ýygnamak gutaransoň, diri galan adamyň "atlary" "" we "çenli" çalşylýar. Öňki hapa ýygnamak wagtynda S1 “to” rolunda bolan bolsa, indi S1 ​​dolup, “ondan” bolýar. Şoňa laýyklykda S0 boş bolsa, “bolar” bolar.

Köne nesil

Ujypsyzja zibil ýygnanandan soň, könelişen zatlar belli bir ýaş çägine ýetende (häzirki JVM-leriň deslapky çäkleri 15 sany zibil ýygnamak sikline bellendi), uzak ýaşan zatlar bilen birlikde ýaş nesilden köne nesle geçýärler. Ujypsyzja zibil ýygnaýjylaryň ýüze çykmagy bilen, zatlar Köne nesil giňişligine geçmegini dowam etdirýär, dolduryp başlar we uly hapalar ýygnanar. Zibiliň esasy ýygyndysy, Köne nesil zibil ýygnaýjy tarapyndan ýygnalanda ýüze çykýar. Kofe arakesmesi # 61.  Zibil ýygnamak Java-da (JVM) nähili işleýär.  Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag - 4

Hemişelik nesil

Sapaklar we usullar ýaly meta-maglumatlar hemişelik nesilde saklanýar. Indi ulanylmaýan sapaklary hapa ýygnaýjy tarapyndan aýryp bolýar. Hapany doly ýygnamak wagtynda ähli nesillerden ulanylmadyk zatlar ýygnalýar.Kofe arakesmesi # 61.  Zibil ýygnamak Java-da (JVM) nähili işleýär.  Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag - 5

Zibil ýygnamagyň görnüşleri

Toplumyň içindäki dürli bölekleri arassalaýan zibil kolleksiýalaryna köplenç kiçi, maýor we doly zibil kolleksiýalary diýilýär. Emma kiçi, maýor we doly adalgalary dogry kesgitlemesiz giňden ulanylýandygy sebäpli, hapa ýygnamagyň bu görnüşleriniň düşündirişine serederis.

Ownuk hapalar ýygyndysy

Generationaş nesil giňişliginden hapalar toplumyna kiçi zibil ýygyndysy diýilýär. JVM täze bir obýekt üçin ýer bölüp bilmeýän mahaly, ýagny “Eden Space” doly bolanda, bu görnüşli gurluş hemişe ýüze çykýar. Şeýlelik bilen, saýlama derejesi näçe ýokary bolsa, ownuk zibil ýygnamak ýygy-ýygydan ýüze çykýar.

Esasy hapalar ýygyndysy

Esasy zibil kolleksiýasy Tenured (köne ýer) arassalaýar. Köne nesil has uludygy sebäpli, ýygnak Generationaş nesilden has az bolýar. Köne nesilden zatlar ýok bolanda, "uly zibil ýygnamak" ýüze çykdy diýýäris. Köne nesil ýygnaýjy, Generationaş nesliň mahabat şowsuzlyklaryndan gaça durmak üçin haçan ýygnamalydygyny çaklamaga synanyşar. Kollektorlar Köne nesliň doldurma çägine gözegçilik edýärler we şol çäkden geçende ýygnap başlaýarlar. Bu çäk mahabat talaplaryna laýyk gelmeýän bolsa, "Doly zibil ýygnamak" işe girizilýär.

Zibiliň doly toplumy

Zibiliň doly toplumy ýaş we garry ýerleri arassalaýar. Köp adamlar maýor (diňe OLD nesli) bilen Full GC (+ aş + OLD (Heap)) arasynda bulaşýarlar. Zibiliň doly toplumy, köne nesli ýygnandan we gysandan soň ähli janly-jandarlary ýaşdan garry nesle wagyz etmegi öz içine alýar. Hapalaryň doly toplumy “Stop-the-World” üçin duralga bolar. Kollektor işleýän wagtynda täze obýektleriň bölünip berilmezligini we obýektleriň elýeterli bolmazlygyny üpjün edýär.

Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag

Çeşme: Dev.to Bahar Çarçuwasy Java platformasy üçin ähliumumy çarçuwadyr. Esasy işleýşini islendik Java programmasy ulanyp biler we Java EE esasly web programmalaryny döretmek üçin giňeltmeler bar. Ine, Bahar kodlamagy bilen baglanyşykly söhbetdeşlik soraglarynyň we jogaplarynyň sanawy. 2021-nji ýylda tehniki söhbetdeşligiňize taýýarlanmaga kömek eder diýip umyt edýäris.Kofe arakesmesi # 61.  Zibil ýygnamak Java-da (JVM) nähili işleýär.  Tehniki söhbetdeşlikde Bahar hakda 15 möhüm sorag - 6

1. Bahar näme?

Jogap: Bahar , Java programmalaryny ösdürmek üçin açyk çeşme. “Bahar çarçuwasynyň” esasy aýratynlyklary islendik Java programmasyny döretmek üçin ulanylyp bilner, we Java EE platformasy esasynda web programmalaryny döretmek üçin giňeltmeler hem bar. Bahar çarçuwasy, POJO (Plain Old Java Object) esasly modelini goşup, J2EE-ni işläp düzmekde we programmirleme tejribesini gowulandyrmagy maksat edinýär.

2. Bahar çarçuwasyndaky noýbanyň deslapky çäkleri nämeden ybarat?

Jogap: Fasuliniň deslapky çäkleri Singleton (dizaýn nagşy).

3. Fasulye simleri näme?

Jogap: Fasulye simleri, bahar konteýnerinde amaly komponentleriň (noýba) arasynda birleşme döretmekdir.

4. Baharyň howpsuzlygy näme?

Jogap: Bahar howpsuzlygy, Java programmalaryna autentifikasiýa we awtorizasiýa usullaryny bermäge gönükdirilen Bahar çarçuwasynyň aýratyn moduly. Şeýle hem, CSRF hüjümleri ýaly iň köp ýaýran howpsuzlyk gowşaklyklaryny düzedýär. Web programmalarynda Bahar Howpsuzlygyny ulanmak üçin ýönekeý düşündiriş bilen başlap bilersiňiz: @EnableWebSecurity.

5. Fasulye kesgitlemesinde näme bar?

Jogap: Fasulye kesgitlemesinde konteýneriň aşakdakylary bilmeli konfigurasiýa metadata atly maglumatlary bar:
  • Fasuly nädip döretmeli;
  • Fasulye ýaşaýyş sikliniň jikme-jiklikleri;
  • noýba baglylygy.

6. Bahar aýakgaby näme?

Jogap: “Bahar Boot”, “Bahar” programmasyny iň az kod bilen işledip bilersiňiz we gazanlaryň konfigurasiýasyny azaltmak üçin öňünden düzülen çarçuwalar toplumyny üpjün edýän taslama.

7. DispatcherServlet näme we näme üçin ulanylýar?

Jogap: DispatcherServlet, gelýän web islegleriniň hemmesini Bahar MVC programmasyna iberýän “Front Controller” dizaýn nusgasynyň ýerine ýetirilişi. “Front Controller” nagşy (Kärhananyň amaly dizaýn nusgasy), ähli haýyşy kabul etmek we amaly gaýtadan işlemek üçin programmanyň dürli böleklerine ugrukdyrmak web programmalarynda giňden ýaýran nagyş. Springazda MVC DispatcherServlet haýyşy dolandyrmak üçin dogry gözegçi tapmak üçin ulanylýar. Bu işleýjiniň kartasyny düzmek arkaly amala aşyrylýar: mysal üçin, @RequestMapping düşündiriş.

8. Bahar-mvc.jar synp ýolunda zerurmy ýa-da bahar ýadrosynyň bir bölegi?

Jogap: Bahar-mvc.jar bahar ýadrosynyň bir bölegidir, ýagny Java taslamasynda Bahar MVC çarçuwasyny ulanmak isleseňiz, programmaňyzyň synpyna bahar-mvc.jar goşmaly. Java web programmasynda bahar-mvc.jar adatça / WEB-INF / lib bukjasyna ýerleşdirilýär.

9. Bahary ulanmagyň peýdalary näme?

Jogap: Aşakda Bahar çarçuwasyny ulanmagyň käbir peýdalarynyň sanawy:
  • Lighteňil - Bahar ululygy we aýdyňlygy barada aýdylanda has ýeňil. Bahar çarçuwasynyň esasy wersiýasy takmynan 2 MB.
  • Dolandyryşyň öwrülişigi (IOC) - Dolandyryş tehnikasynyň tersligini ulanyp, bahar paslynda birleşdirilýär. Obýektler garaşly zatlary döretmegiň ýa-da gözlemegiň ýerine garaşlylygy üpjün edýär.
  • Aspekt-gönükdirilen - Bahar aspektli programmirlemegi goldaýar we amaly hyzmat logikasyny ulgam hyzmatlaryndan bölmek arkaly yzygiderli ösüşi üpjün edýär.
  • Konteýnerler - Bahar konteýni obýektleri döredýär, birleşdirýär, sazlaýar we ýaradylyşdan başlap zibile çenli dolandyrýar.
  • MVC çarçuwasy - Bahar web çarçuwasy, Struts ýa-da beýleki aşa dizaýn edilen ýa-da az meşhur web çarçuwalary ýaly web çarçuwalaryna alternatiwany üpjün edýän oňat dizaýn edilen MVC web çarçuwasydyr.
  • Geleşikleri dolandyrmak - Baharyň ýerli amallara (meselem, ýekeje maglumat bazasyny ulanmak) ýa-da global amallara (mysal üçin JTA ulanmak) giňelip bilýän yzygiderli amallary dolandyrmak interfeýsi bar.
  • Kadadan çykma - Bahar tehnologiýa mahsus kadadan çykmalary (JDBC, Gibernate ýa-da JDO zyňanlar ýaly) yzygiderli, barlanmadyk kadadan çykma üçin amatly API bilen üpjün edýär.

10. Bahar noýbasy näme?

Jogap: Bahar noýbasy Bahar konteýner tarapyndan dolandyrylýan zatlaryň mysalydyr. Çarçuwalar bilen döredilýär we birleşdirilýär we soňundan alyp boljak ýeriňizden “obýekt sumkasyna” (konteýner) ýerleşdirilýär. Simler garaşlylyk sanjymyny emele getirýär. Diýmek, “Maňa bu zat gerek” diýip bilersiňiz, çarçuwa şol obýekti almak üçin käbir düzgünlere eýerer.

11. “Core Container” modulynyň maksady näme?

Jogap: ernadro konteýni Bahar çarçuwasynyň esasy işleýşini üpjün edýär. Esasy konteýneriň esasy bölegi, Zawodyň nusgasyny durmuşa geçirýän BeanFactorydyr. BeanFactory konfigurasiýa we amaly kesgitleme baglylyklaryny hakyky programma kodundan aýyrmak üçin Inversion dolandyryşyny ulanýar.

12. Programmanyň mazmuny näme?

Jogap: Bir seretseň, programma mazmuny noýba zawody bilen deňdir. Ikisem noýba kesgitlemelerini ýükleýär, noýbalary birleşdirýär we isleg boýunça paýlaýar. Alsoöne şeýle hem üpjün edýär:
  • Halkaralaşmagy goldamak ýaly tekst habarlaryny çözmek üçin gural.
  • Faýl çeşmelerini ýüklemegiň umumy usuly.
  • Diňleýji hökmünde hasaba alnan noýba üçin wakalar.

13. Java Serwer Faces (JSF) -ni Bahar bilen nädip birleşdirmeli?

Jogap: JSF we Bahar birmeňzeş aýratynlyklary paýlaşýarlar, esasanam Dolandyryş hyzmatlarynyň tersine. “Face-config.xml” konfigurasiýa faýlynda JSF dolandyrylýan noýba yglan etmek bilen, “FacesServlet” -e şol noýbany işe başlamaga rugsat berýärsiňiz. JSF sahypalaryňyzda bu noýba we olaryň ähli aýratynlyklary bar. JSF we Bahary iki görnüşde birleşdirip bolar: DelegatingVariableResolver : Bahar JSF we Bahary bilelikde ulanmaga mümkinçilik berýän JSF üýtgeýän çözgüdi bilen gelýär. DelegatingVariableResolver ilki bilen JSF-iň ýerine ýetirilişiniň deslapky terjimeçisine, soňra bolsa “Bahar WebApplicationContext” -iň “iş kontekstine” baha berýär. Bu garaşlylygy JSF tarapyndan dolandyrylýan noýba sanjymyny aňsatlaşdyrýar. FacesContextUtils : customörite üýtgeýänResolver, häsiýetlerini face-config.xml-de noýba görnüşinde düzeninde gowy işleýär. Aöne noýba almak zerur bolsa, “FacesContextUtils” synpy aňsatlaşdyrýar. “WebApplicationContextUtils” -e meňzeýär, “ServletContext” parametrini däl-de, “FacesContext” parametrini kabul edýär.
ApplicationContext ctx = FacesContextUtils.getWebApplicationContext (FacesContext.getCurrentInstance ());

14. Bahar MVC çarçuwasy näme?

Jogap: “Bahar web MVC” çarçuwasy çeýe we birleşdirilen web programmalaryny ösdürmek üçin ulanyp boljak model-görnüş-kontrol arhitekturasyny we öňünden gurlan komponentleri üpjün edýär. MVC nagşy, bu elementleriň arasynda boş birleşmäge mümkinçilik berýän programmanyň dürli taraplarynyň (giriş logikasy, iş logikasy we UI logikasy) bölünmegine getirýär.

15. Springazda hadysalary dolandyrmak nähili işleýär?

Jogap: “ApplicationContext” -de işlemek “ApplicationEvent” synpy we “ApplicationListener” interfeýsi arkaly üpjün edilýär . .Agny, noýba “ApplicationListener” -i amala aşyrýan bolsa , her gezek “ApplicationEvent” “ ApplicationContext” -e çap edilende , bu noýba hasaba alynýar. Okanyňyz üçin sag boluň we tehniki söhbetdeşlik bilen üstünlik arzuw edýärin!
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION