Java Virtual Machine udgør grundlaget for programmeringssproget Java . Den software fungerer som en implementering buffer mellem Java-kode og det underliggende computersystem. Dette tillader Java-kode til at køre på ethvert system , som de er , øge bærbarhed. Siden JVM eksisterer som et miljø, hvor for at køre koden , den indeholder sin egen hukommelse konfiguration, herunder overfladisk hukommelse og heap plads. Den bunke plads gør en væsentlig del af JVM hukommelse, som indeholder applikationskrav run -time data . Objekter og hukommelse
Java repræsenterer et rent objektorienteret programmeringssprog , hvilket betyder, at Java indeholder fordelene ved objektorienteret programmering , herunder arv og polymorfi . Hvis du vil medtage disse fordele , skal JVM have en plads til at gemme instantierede objekter. Disse objekter findes ikke i umiddelbar minde om en en fuldbyrdende tråd af Java-kode . Snarere Java-kode erklærer "Referencer" til objekter , der lagrer en placering i dyb, langtidshukommelsen .
Heap og Stack
bunke og stak udgør forskellen mellem lange og kortere sigt hukommelse i en fuldbyrdende program , uanset objektorienteret sprog . Stakken refererer til de umiddelbare variabler og metodekald inde en fuldbyrdende program. Dette omfatter skalar variabler, såsom heltal og bytes , samt kaldet funktioner . Dyngen , på den anden side repræsenterer det sted , hvor skabt objekter gemmes af programmet . Objekter allokeres dynamisk på den bunke , og blive der, indtil der ikke længere kræves af programmet.
JVM hukommelse
Designere udviklet JVM hukommelse system til at efterligne objektorienteret system andre sprog såsom C + + . Hver fuldbyrdende tråd af Java-kode i JVM har sin egen stack , der repræsenterer sin lokale skalar variabler og funktion opkald. Endvidere JVM har sin egen bunke plads . Når et program opretter en reference til et objekt , som objekt trækker hukommelse fra den kollektive bunke rummet.
Heap i JVM hukommelse
bunke rum er kun en del af den samlede JVM hukommelse , sammen med stack plads og andre hukommelse tildelinger for livsvigtige funktioner og JVM -kode . Men den bunke rummet udgør en afgørende del af JVM i , at det er det køretøj , som objekter er oprettet. Også den JVM har en indbygget garbage indsamling program til at slette ubrugte objekter fra den bunke . I ældre objektorienterede sprog , måtte objekter, der skal slettes manuelt eller risikerede at bruge op den bunke plads i hvad der blev kaldt en " hukommelsesfejl . " JVM skrald indsamler imidlertid overvåger bunke og sletter gamle genstande .