Cum java stochează datele în memorie

Cum stochează Java datele din memorie?

Informațiile din post sunt date pe baza cărții Eckel B. Filozofia Java (ediția a 4-a)

Fiecare limbaj de programare are propriile instrumente pentru a lucra cu datele din memorie. În Java, tratați toate datele ca un obiect. Identificatorul pe care îl manipulați este de fapt o referință la obiect.

Când definiți un link, este recomandabil să îl atașați la un obiect nou. Acest lucru se face, de obicei, cu cuvântul cheie nou. De fapt, înseamnă: "Creați-mi un obiect nou". De exemplu

Este util să vizualizați în mod clar ceea ce se întâmplă în timp ce programul este în desfășurare și, în special, modul în care datele sunt stocate în memorie. Există cinci locuri diferite pentru stocarea datelor

Registre. Acesta este cel mai rapid depozit, deoarece datele sunt stocate chiar în interiorul procesorului. Cu toate acestea, numărul de registre este strict limitat, deci registrele sunt utilizate de compilator după cum este necesar. Tu, ca programator, nu ai acces direct la registre, nu vei găsi nici cea mai mică urmă a suportului lor în limbă.

Stivă. Această zonă de stocare este în memorie partajată RAM (RAM), dar procesorul oferă acces direct la acesta utilizând pointerul de stivă. Indicatorul stivă se mișcă în jos pentru a aloca memoria sau pentru al elibera. Aceasta este o modalitate extrem de rapidă și eficientă de plasare a datelor, la o viteză inferioară doar regiștrilor. În timpul procesării programului, compilatorul Java trebuie să cunoască ciclul de viață al datelor plasate pe stivă. Această restricție reduce flexibilitatea programelor dvs., prin urmare, deși unele date Java sunt stocate pe stivă (în special referințe de obiecte), obiectele Java în sine nu sunt stivuite.

Un buchet. O piscină de memorie pentru uz general (localizată și în RAM) care găzduiește toate obiectele Java. Avantajul heap este că compilatorul nu are nevoie să știe cât de mult există obiectele care există acolo. Astfel, lucrul cu halda oferă un avantaj semnificativ în flexibilitate. Când trebuie să creați un obiect, scrieți cod folosind noi. iar memoria este alocată din heap în timpul execuției programului. Desigur, pentru flexibilitatea pe care trebuie să o plătiți: alocarea memoriei din heap necesită mai mult timp decât în ​​stack.

Stocare permanentă. Valorile constante sunt adesea construite direct în codul programului, deoarece acestea sunt neschimbate. Uneori, astfel de date pot fi plasate în memorie permanentă (ROM), când vine vorba de sisteme "încorporate".

Stocarea externă. În cazul în care datele sunt stocate în afara programului, ele pot exista chiar și atunci când ea nu este îndeplinită. Cele două exemple principale: obiecte filetate (obiecte în flux), în care obiectele sunt prezentate sub forma unui flux de octeți sunt folosite în mod obișnuit pentru transferul la alte mașini și obiecte de lungă durată (persistente), care sunt stocate pe disc și să păstreze starea lor, chiar și după încheierea programului. O caracteristică a acestor tipuri de stocare a datelor este posibilitatea transferului de obiecte în ceva care pot fi stocate pe alte suporturi, și apoi restaurat la un obiect obișnuit stocate în memoria RAM. În Java, organizat suport ușor Persistența (ușor) și mecanisme, cum ar fi JDBC și hibernarea, oferă un suport mai bun pentru stocarea și regăsirea informațiilor despre obiecte din baza de date.

Cum java stochează datele în memorie

Articole similare