Java-programmer bruker datamaskinens minne på forskjellige måter. Hvis Java-programmerere har minst en grunnleggende forståelse av hvordan minnet håndteres i språket , de har en mye bedre sjanse til å skape effektiv, høytytende applikasjoner. Som med de fleste aspekter av programmering, er det ikke nødvendig å forstå alle implementering detaljer om Java minnehåndtering modell, men å ta tak i to grunnleggende typer minne og deres innvirkning på programmeringen er nyttig . Typer og Minne
Java variabler modell data og kode komponenter på ulike måter. Avhengig av typen og omfanget av en variabel, kan det lagres enten i haug eller stabel minne. Stack minne kan betraktes som kortsiktig , heap som langsiktig. Når du nærmer deg et utviklingsprosjekt i Java , må du gjøre kontinuerlige beslutninger om hvordan du modell dataelementer, som vil bestemme i hvilke typer minne de er lagret . Å gjøre disse beslutningene med en forståelse av implikasjonene tillater utviklere å maksimere program effektivitet.
Primitives
primitive typer i Java omfatter grunnleggende antall og karakter typer som " int " for primitive heltallsverdiene og " røye " for primitive tegn. Når Java lagrer primitive typer , består informasjonen som er lagret i stor grad av de variable verdiene , slik at mengden av minnebruk en tendens til å være mindre enn med objekttyper . Hvis en primitiv type variabel eksisterer bare som en lokal variabel i et program klasse fil, vil Java lagre den i stabel minne.
Objekter
objekttyper i Java har begge typene gis innenfor språket selv og som er definert av programmerere som bruker klassen erklæringer . Når et Java -program skaper et objekt , fordeler JVM ( Java Virtual Machine) en del av heap minne for det. I programmet fungerer variabelnavnet tildelt for en objekttype som en referanse til denne plasseringen i minnet. Plassen for et objekt innen heap -minnet kan inneholde dataene i objektet , inkludert variabler av enhver type, har enten primitive eller objekt.
Variable omfang
Variable omfang en direkte innvirkning på minnehåndtering i et Java- program . Å skape effektive applikasjoner , utviklere søke å minimere den nødvendige muligheter for en gitt variabel eller data element. For eksempel viser følgende en betinget utsagn med en lokal variabel inni den : en
int someNumber = 3;
if ( someNumber > 0 ) {
int doubleNumber = someNumber * 2 ;
System.out.println ( doubleNumber ) ;
}
p Dette trivielt eksempel utfører en beregning på en variabel , skriver resultatet ut . Den variable lagring beregningsresultatet er deklarert inne i betinget , så er ikke tilgjengelig når som helst etter den betingede blokken . Generelt , noe som gir variabler det minimum av omfang som kreves for dem å fungere hjelper korrekt programmer bruker så lite minne som mulig .
Garbage Collection
JVM Garbage Collector forvalter hvor mye minne som er tilgjengelig for et program . Hvis et objekt eller en annen type ikke lenger blir brukt i en applikasjon ( for eksempel hvis det har utført sin funksjon og er ikke lenger nødvendig ), bør det brukes hukommelse ideelt bli gjort tilgjengelig på nytt hvis det er nødvendig . The Garbage Collector er i stand til å omfordele heap minne om et program har lite minne ressurser . Hvis et objekt variabel er ute av omfang, kan minnet være en kandidat for søppelrydding .