Noțiuni de bază privind gestionarea memoriei în java

Informații generale despre gestionarea memoriei

Managementul memoriei este procesul de plasare de obiecte noi și de eliminare a obiectelor neutilizate pentru a face loc acestor noi alocări de obiecte. Modul tradițional pentru limbaje de a programa gestionarea memoriei este manual. Esența sa este după cum urmează:







  • Pentru a crea un obiect în memorie dinamică, programatorul apelează explicit comanda de alocare a memoriei. Această comandă returnează un pointer în zona de memorie selectată care este stocată și utilizată pentru accesarea acesteia.
  • Atâta timp cât este necesar pentru programul de obiectul creat, programul îl accesează printr-un pointer salvat anterior.
  • Atunci când nici un obiect trece, programatorul face apel în mod explicit comanda deallocation, care trece un pointer la un obiect șters.
  • Gestionarea manuală a memoriei permite posibile două posibile probleme: suspendarea legăturilor și scurgerea memoriei.

Scurgerea de memorie este procesul de reducere necontrolată a volumului de memorie virtuală operațională sau virtuală a computerului, asociată cu erori în executarea programelor care nu eliberează la timp zonele de memorie inutile.

Toate problemele de gestionare a memoriei manuale în Java sunt rezolvate de un colector automat de gunoi. Dar, înainte de a cunoaște colectorul de gunoi, trebuie să clarificați conceptul de heap (halda).

În Java, toate obiectele se află într-o zonă de memorie numită heap. O grămadă de creat atunci când JVM este pornit și poate fi crescută sau micșorată în dimensiune în timpul rulării. Când se termină heapul, se produce un mecanism de colectare a gunoiului. Toate obiectele care nu vor mai fi folosite niciodată sunt curățate. eliberând astfel spațiu pentru obiecte noi.







Rețineți, de asemenea, că JVM utilizează mai multă memorie decât ocupă heapul. De exemplu, pentru metodele Java și stivele de fire, memoria este alocată separat de heap.

Mărimea heapului depinde de platforma utilizată, dar, de regulă, este cuprinsă între 2 și 128 KB.

Colecția de gunoi

Motorul de colectare a gunoiului este procesul de eliberare a spațiului în heap, pentru posibilitatea de a adăuga obiecte noi.

Obiectele sunt create folosind noul operator, atribuind astfel o referință la obiect. Când terminați lucrul cu obiectul, pur și simplu nu mai faceți referire la acesta - doar atribuiți variabilei o referință la un alt obiect sau valoare nulă sau opriți executarea metodei astfel încât variabilele locale să se termine în mod natural. Obiectele care nu sunt menționate sunt de obicei numite gunoi, care vor fi șterse.

Memoria este eliberat de către colectorul de gunoi pe cont propriu „discreție“ și de obicei, numai în cazurile în care pentru programul suplimentar de lucru necesită un fragment de spațiu liber este mai mare decât cea care este disponibil într-o mașină virtuală disponibilă în acest moment, sau în cazul în care colectorul de gunoi, „anticipează“ potențial o lipsă de memorie în viitorul apropiat. Programul poate fi (și de multe ori este cazul) pentru a finaliza lucrările fără a epuiza resursele de memorie disponibile, sau chiar aproape de această linie, și așa că nu au nevoie de „serviciile“ ale colectorului de gunoi. Obiectul este considerat „mai evaziv“ în cazul în care nici una dintre variabilele din cod care rulează în acest moment, nu conține nici o referire la ea, sau un lanț de link-uri care ar putea lega obiectul cu un program variabil se termină.

Gunoiul este colectat de sistem fără intervenția dvs., dar acest lucru nu înseamnă că procesul nu necesită atenție. Nevoia de a crea și de a șterge un număr mare de facilități are un impact semnificativ asupra performanței de aplicare, iar în cazul în care viteza a programului este un factor important, ar trebui să se gândească cu atenție cu privire la deciziile legate de crearea de obiecte - aceasta, la rândul său, va reduce cantitatea de deșeuri și supuse eliminării.







Articole similare

Trimiteți-le prietenilor: