JavaRush /Java Blog /Random-TK /Java ýadyny dolandyrmak üçin gollanma (we koduňyzy tygşyt...
pandaFromMinsk
Dereje
Минск

Java ýadyny dolandyrmak üçin gollanma (we koduňyzy tygşytlamak)

Toparda çap edildi
Terjimeçiniň belligi: notany terjime etmek islegi iýun aýynyň başynda metro awtoulagynda ýarym uklap okandan soň ýüze çykdy. Maksatly diňleýjiler: Java dünýäsinde ilkinji ädimlerini ätýän we esasy tehniki bilimleriniň ýa-da islegleriniň tebigaty sebäpli Java-yň kapotyna girmäge we ähli “elektrodinamiki” prosesleri öwrenmäge höwesli adamlar. Muny okaýanlar üçin JVM we GC sazlamak dünýäsine syýahat üçin başlangyç nokat boljakdygyna ynanýaryn. Adalatly ýel! Asyl makala Bu ýerde dörediji hökmünde Java programmasyndaky näsazlyklary arassalamak we gerek ýerinde ýerine ýetirmek üçin sanlyja sagat sarp edýärsiňiz. Synag wagtynda programmanyň kem-kemden haýal işleýändigini we ahyrynda düýbünden ýykylýandygyny ýa-da pes işleýändigini görkezýärsiňiz. Ahyrynda ýadyň syzmagynyň ýüze çykýandygyny kabul ediň. Zibil ýygnaýjy Java bu syzdyrmalara garşy göreşmek üçin elinden gelenini edýär. Emma şular ýaly ýagdaýlar bilen ýüzbe-ýüz bolanda edip boljak köp zat bar. Memoryadyň syzýan jaňlaryny kesgitlemegiň, sebäplerini kesgitlemegiň we Java zibil ýygnaýjynyň umumy programmanyň işine täsir etmegine düşünmegiň ýollary gerek.

Java ýat syzyşlarynyň esasy alamatlary

Programmanyň ýadyň syzmagy bilen baglanyşykly birnäçe alamatlar bar. Birdenkä programma näsazlygy däl-de, öndürijiligiň birneme peselmegi diňe ýadyň syzmagyny görkezýär. Mesele her gezek iş wagtynda ýa-da programma köp mukdarda maglumat bilen işläp başlanda ýa-da tersine, programmany ulaldyp başlanda bolup biler. Programma, ýadyň ähli çeşmelerini sarp edensoň, ýadyň ýalňyşlygyny görkezer. Programmany täzeden açsaňyz we iň gowusyna umyt etseňiz, syzmak düzülýänçä gaýta-gaýta heläkçilige duçar bolarsyňyz. Umuman aýdylanda, ýadyňy boşatmagyň ýerine obýekt salgylanmalary ýygnananda, ýadyň syzmagy ýüze çykýar. Availablehli elýeterli ýady eýeleýär we programmanyň zerur çeşmelere girmegini mümkin etmeýär.

Memoryadyň syzmagy ýaly görünýän konfigurasiýa ýalňyşlyklary

Java ýatda kynçylyk döredýän ýagdaýlara göz aýlamazdan we derňew geçirmezden ozal gözlegleriň düýbünden başga mesele bilen baglanyşykly däldigine göz ýetirmeli. Memoryatdan daşary käbir ýalňyşlyklar, konfigurasiýa säwlikleri ýaly dürli ýalňyşlyklar sebäpli ýüze çykýar. Programma ýadyň pes bolmagy ýa-da ulgamdaky beýleki programmalar bilen gapma-garşy bolup biler. Memoryadyň pesligi barada gürleşip başlasaňyz, syzmagyň nämä sebäp bolýandygyny bilip bilmeseňiz, programma başgaça göz aýlaň. Jemleýji sapakda üýtgeşmeler girizmeli ýa-da Java synplarynyň beýanyny we käbir goşmaça maglumatlary saklamak üçin JVM ýadynyň meýdany bolan hemişelik nesil giňişligini köpeltmelidigiňize göz ýetirersiňiz.

Oryat gözegçilik gurallarynyň peýdalary

Monitoringat gözegçilik gurallary, Java programmasynyň elýeterli çeşmeleri ulanmagyna has köp görünýär. Bu programma üpjünçiligini ulanyp, ýadyň syzmagy we beýleki öndürijilik hadysalarynyň köküni gözlemegi daraltmak üçin ädim ädýärsiňiz. Gurallar birnäçe kategoriýalara bölünýär we ýadyň syzmagy bilen iş salyşýan bolsaňyzam, meseläni nädip dogry bellemelidigini we nämäniň nädogrydygyny anyklamak üçin dürli programmalary ulanmagyňyz zerur bolup biler. Toplaýyş faýllary Java ýadyny derňemek üçin zerur maglumatlary berýär. Bu ýagdaýda iki gural ulanmaly: biri zibil faýly döretmek, beýlekisi jikme-jik derňew üçin. Bu çözgüt, programma bilen nämeleriň bolup geçýändigi barada jikme-jik maglumat berýär. Gural mümkin bolan meseleleriň ýerleşýän ýerlerini kesgitlänsoň we wakanyň takyk ýerini anyklamak üçin sebiti gysgaltmak üçin işleýär. Bu döwür, synagyň we ýalňyşlygyň iň uzyn we iň keýp alýan bölegidir. Analyat analizatory koduňyzdaky birnäçe meseläni görkezýär, ýöne programmaňyzyň haýsy kynçylyklara duçar bolýandygyna doly ynanmaýarsyňyz. Şol bir ýalňyşlyk bilen ýüzbe-ýüz bolsaňyz, başlaň we başga bir ýalňyşlygyň üstünde işläň. Bir gezekde bir üýtgeşme giriziň we ýalňyşlygy köpeltmäge synanyşyň. Erroralňyşlyk şertlerini köpeltmek üçin programmanyň birnäçe wagtlap işlemegine rugsat bermeli bolarsyňyz. Ilkinji synag wagtynda ýadyň syzmagy bar bolsa, programmany synagdan geçiriň. Programma az mukdarda maglumat bilen oňat işlemegi mümkin, ýöne köp mukdarda maglumat bilen işläniňizde ýene şol ýalňyşlyklary taşlap biler. Şol bir ýalňyşlyk henizem ýüze çykýan bolsa, başlamaly we başga bir sebäbini gözlemeli. Gözegçilik gurallary, programma doly işledilenden soň peýdalydygyny subut edýär. JVM-iň işleýşine uzakdan gözegçilik edip bilersiňiz we bir programmaçy meselä girmezden we geljekde programmirleme usullaryny gowulaşdyrmak we Java-yň agyr ýük astynda nähili işleýändigini görmek üçin taryhy öndürijilik maglumatlary ýygnamazdan ozal näsazlyklary ýüze çykaryp bilersiňiz. Köp çözgütler "howp" duýduryş rejelerini ýa-da beýleki şuňa meňzeş reesimleri öz içine alýar, şonuň üçin işläp düzüjiniň nädogrydygyny derrew bilip biler. Her bir dörediji, önümçiligiň dowamynda möhüm bir programmanyň çökmegini we programma iş wagtynyň dowamynda onlarça ýa-da ýüzlerçe müň dollar ýitmegini islemeýär, şonuň üçin ýadyň gözegçiligi gurallary döredijiniň jogap wagtyny gysgaldýar. Oryadyň gözegçiligi programmalary, müşderiniň ýanyna gitmegiňizi haýyş etmegiň ýerine, anyklaýyş işini derrew başlamaga mümkinçilik berýär, bu ýerde hiç kim size haýsy ýalňyşlygyň bolandygyny ýa-da programmanyň haýsy säwlik kody görkezjekdigini aýdyp bilmez. Java programmaňyzyň ýadyna we öndürijilik meselelerine köplenç çümüp giden bolsaňyz, synag prosesine çuňňur göz aýlaň. Ösüş prosesinde her gowşak ýeri kesgitläň we synag strategiýalaryňyzy üýtgediň. Kärdeşleriňiz bilen maslahatlaşyň we synag çemeleşmeleriňizi bar bolan iň oňat tejribe bilen deňeşdiriň. Käwagt kiçijik bir kody täzeden gözden geçirip, tutuş programma dowamly täsirini üpjün etmeli bolarsyňyz.

Java ýat we ýadyň syzmagyndaky hapa ýygnaýjynyň roly

Java-daky zibil ýygnaýjy, programmanyň işleýşinde we ýadyň ulanylyşynda möhüm rol oýnaýar. Ulanylmaýan (öli) zatlary gözleýär we pozýar. Bu obýektler indi ýady tutmaýar, şonuň üçin programmaňyz çeşmeleriň elýeterliligini üpjün etmegi dowam etdirýär. Käwagt programma GC-ä ölen zatlary aýyrmak üçin ýeterlik wagt ýa-da çeşme bermeýär we olar ýygnanýar. Ölendigine ynanýan zatlaryňyza işjeň girip boljak bir ýagdaýa duş gelip bilersiňiz. Zibil ýygnaýjy bu barada hiç zat edip bilmeýär, sebäbi ... awtomatiki ýadyň dolandyryş mehanizmi işjeň obýektlerden aýlanýar. Adatça hapa ýygnaýjy özbaşdak işleýär, ýöne ýadyň agyr meselelerine jogap bermek üçin özüni alyp barşyny sazlamaly. Şeýle-de bolsa, GC-iň özi öndürijilik meselesine sebäp bolup biler.

GC sebitleri

Zibil ýygnaýjy, ýygnamagy optimizirlemek üçin zatlary dürli ýerlere bölýär. Generationaş nesil çalt ölýän zatlary görkezýär. Zibil ýygnaýjy, köplenç arassalanmaly wagtyndan bäri bu ugurda işleýär. Belli bir döwre ýetenden soň diri galan zatlar Köne nesle geçirilýär. Köne nesil sebitinde zatlar uzak wagtlap saklanýar we kollektor tarapyndan ýygy-ýygydan aýrylmaýar. Şeýle-de bolsa, kollektor bu çäkde işleýän mahaly, kollektor hapalary arassalamak üçin janly zatlara göz aýlaýan uly amaldan geçýär. Netijede, amaly obýektler soňky hemişelik nesil meýdanynda ýerleşýär. Adatça, bu obýektler zerur JVM meta-maglumatyny öz içine alýar. Programma hemişelik nesilde kän bir zibil öndürmeýär, ýöne sapaklar zerur däl wagty sapaklary aýyrmak üçin kollektor gerek.

Zibil ýygnaýjy bilen jogap wagty

Zibil ýygnaýjy, amaly sapaklaryň ýerine ýetirilişine garamazdan, gutarmagyna garaşman saklaýar. Bu hadysa "Dünýäni bes et" çäresi diýilýär. Zibil ýygnaýjynyň Generationaş nesil sebiti öndürijilige az täsir edýär, ýöne GC intensiw arassalaýan bolsa, problemalar göze ilýär. Youngaş nesil kiçi GC yzygiderli işleýän ýa-da Köne nesil gözegçiliksiz ýagdaýa düşýän ýagdaýa düşersiňiz. Şeýle ýagdaýda Youngaş nesil ýygylygyny bu kollektor meýdançasynyň göwrümini köpeltmegi talap edýän öndürijilik bilen deňleşdirmeli. Zibil ýygnaýjynyň hemişelik nesli we köne nesil sebitleri amaly ýerine ýetirişine we ýadyň ulanylyşyna ep-esli täsir edýär. Zibilleri arassalamak boýunça bu uly amal, ölen zatlary çykarmak üçin üýşmekden geçýär. Bu proses ownuk gurluşdan has köp wagt alýar we öndürijiligiň täsiri has uzaga çekip biler. Arassalamak intensiwligi ýokary bolsa we Köne nesil meýdany uly bolsa, "Dünýäni bes et" wakalary sebäpli tutuş programmanyň öndürijiligi peselýär. Zibil ýygnamagy optimizirlemek programmanyň näçe gezek işleýändigini, umumy öndürijilige täsirini we gözegçilik ýygylygyny azaltmak üçin programma sazlamalaryny nädip sazlamalydygyny gözegçilikde saklamagy talap edýär. Programmanyň ýerleşdirilmeginden özüni berkitmeli bolmazdan, şol bir obýekti bir gezekden köp kesgitlemeli bolmagyňyz mümkin ýa-da tutuş ulgamy saklaýan gysyş nokatlaryny tapmaly bolmagyňyz mümkin. Balansy dogry gazanmak, esasanam Youngaş we Köne nesil deňagramsyz bolsa, CPU ýükünden başlap, zibil ýygnaýjy sikllerine çenli hemme zada üns bermegi talap edýär. Memoryadyň syzmagyna garşy göreşmek we zibil ýygnamagy optimizirlemek Java programmasynyň işleýşini gowulaşdyrmaga kömek edýär. Göçme manyda Siz köp hereket edýän böleklere degişýärsiňiz. Rugöne berk görünmegi üpjün etmek üçin döredilen dogry näsazlyklary düzetmek çemeleşmesi we derňew gurallary bilen tuneliň ujundaky ýagtylyga ýetersiňiz. Otherwiseogsam, öndürijilik bilen baglanyşykly kynçylyklardan ejir çekersiňiz. Seresaply ýadyň ýerleşdirilmegi we gözegçiligi Java programmasynda möhüm rol oýnaýar. Programmaňyzy optimizirlemek we ýadyňdan çykmajak ýalňyşlyklardan gaça durmak üçin zibil ýygnamak, obýektleri zyňmak we öndürijilik bilen özara täsirine doly gözegçilik etmeli. Gözegçilik gurallary, ýüze çykýan kynçylyklaryň üstünde durmaga we ýadyň ulanylyş meýillerini görkezmäge kömek eder, şeýlelik bilen näsazlyklary düzetmek üçin işjeň çemeleşersiňiz. Oryadyň syzmagy köplenç adaty usulda näsazlyklaryň çözülmeginiň netijesizligini görkezýär, esasanam nädogry konfigurasiýa parametrleri bilen ýüzbe-ýüz bolsaňyz, ýöne ýat bilen baglanyşykly meseleleri çözmek ýoluňyzda durýan wakalardan çalt gaça durmaga kömek edip biler. Java ýady sazlamagyň we GC-iň kämilligi ösüş prosesiňizi has aňsatlaşdyrýar.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION