Udviklere skabt Java med to primære mål for øje. Først , for at skabe et programmeringssprog er bygget helt efter en objektorienteret paradigme . For det andet , for at gøre Java-sproget kører på toppen af Java Virtual Machine (JVM ) at sikre cross -platform bærbarhed. Fordi Java kørte på JVM og ikke interface direkte med hardware , kunne JVM håndtere mange af de problemer der er forbundet med objektorienteret programmering , nemlig memory management. Den proces, hvorigennem JVM håndterede hukommelsen kaldes " garbage collection ". For at forstå indsamling, en programmør har brug for at forstå objektorienteret programmering begreber , herunder hvordan hukommelsen er lykkedes . Objektorienteret programmering
Objekt-orienteret programmering (OOP ) repræsenterer et paradigme af programmeringen , hvor programmører at skabe data "objekter" som en del af deres kode . Programmører bruge disse objekter til at repræsentere komplekse datatyper , der indeholder både en stat og udstille visse adfærd . Så for eksempel , skaber en programmør en " Sphere " klasse for et program, der virker der omfatter beregninger af sfærer. Sphere klassen kan indeholde data for en radius ( dets tilstand ) og en funktion til beregning sit eget område (dens adfærd).
Objekter og hukommelse
Både Java og C + + er OOP sprog. Men forskellen mellem to illustrerer behovet for affaldsindsamling i Java . I C + + , en programmør handler direkte med operativsystemet . Det betyder, at når en programmør ønsker at oprette et objekt , kan hun gøre en af to ting. Først , kan hun skabe en " overfladisk " copy under kodning proces. For det andet, og mere almindelige , kan hun skrive kode, der skaber objekter dynamisk i "dyb " hukommelse under kode ved brug af " pointere. "
Pointers og memory leaks
< br >
A C + + program bruger pointere at allokere hukommelse under kode. A " pointer" indeholder en henvisning til en hukommelse. Når en programmør har brug for at designe kode, der opretter objekter under kørslen , han bruger pointers til reference hukommelse til afsat til objekt skabelse. Det pointer er da det eneste, referencer, objekt. Skal programmet flytte markøren reference under udførelse, objektet " pegede på " kan bruges ikke længere . Det er ganske enkelt sidder i hukommelsen med ingen måde at få adgang til det . Når store mængder af objekter er skabt gennem pointere og venstre i hukommelsen på grund af tab af pointer reference, er dette kendt som en " memory leak " og kan forårsage alvorlige problemer i et program.
Garbage Collection < br >
C + +, ansvaret for at forvalte hukommelse og forhindrer memory leaks falder helt og holdent på programmør. Java-sproget , i modsætning til C + +, kører på JVM , der indvindes af operativsystemet. På grund af dette , kan programmøren ignorere systemets hukommelse ledelse for så vidt angår genstande . Snarere JVM holder styr på eksisterende objekter og referencer , og sletter dem, der ikke længere er i brug . Denne måde, til opgave at forvalte hukommelse falder på JVM og programmøren kan arbejde på forskellige opgaver, mens overbevist om, at hukommelse ledelse er taget hånd om .
Garbage Collection og 1.4.1 JVM < br >
1.4.1 version af JVM tilbyder en model for garbage collection . JVM bruger en alder division paradigme , mens "unge " objekter og "gamle" objekter findes i hukommelsen . JVM kan fremme unge objekter til gamle objekter baseret på , hvor ofte de unge objekter kopieres under udførelsen af programmet . Gamle genstande , så anses for væsentlige , og derfor ikke er markeret til sletning. Den 1.4.1 JVM garbage collection systemet bruger en "train " metode til indsamling /sletning, ved at tillade øget lille garbage collection passerer snarere end større , langsommere samlinger. Også den 1.4.1 JVM udnytter multiprocessing systemer ved at tilbyde sideløbende garbage collection på flere processorer.