? Java bruger en garbage collection system til styring af hukommelse . Mens dette sker en ekstraordinær belastning off udvikler - han ikke længere har sikre objekter fjernes manuelt fra hukommelsen, når de ikke længere er i brug - det kan også tage væk nogle funktioner , som udviklere fra andre baggrunde kan være vant til . Mens færdiggøre funktionaliteten ikke er nøjagtig den samme som en C + + destructor , kan det betragtes som tættest på en analog Java sproget giver. Hurtigt overblik over Garbage Collection
Renovation er en af de mere avancerede emner i Java programmering. Strengt taget kan Java-udviklere gå hele karrierer uden nogensinde brug for at vide meget om affaldsindsamling og hvordan det fungerer . Grundlæggende er hvert objekt oprettet i et Java -program registreret hos Java runtime , sammen med en optælling af alle de steder, der er en eksisterende reference til det pågældende objekt. Når et objekt ikke længere nævnt af andre genstande , systemet markerer det for indsamlingen , og næste gang affaldsindsamling kører , det sletter dette objekt.
Basic Memory Management i C + + < br >
Tingene er anderledes i andre programmeringssprog , såsom C + + , for eksempel. I C + + , udvikleren kontrollerer , når et objekt fjernes fra hukommelsen , i modsætning til systemet . Dette er kendt som " deterministisk memory management ", og det har både sine fordele og ulemper . Den primære plus side til dette er , at bygherren ved præcis, hvornår i koden objektet slettes . Men det er ekstremt nemt at slette et objekt , der kan stadig være i brug andre steder i koden.
Destruktorer og færdiggøre
C + +, kan udviklere tilføje en destructor til en klasse , som er en metode , der kaldes , når et objekt slettes . Dette gør det muligt for bygherren at udføre kode , når objektet ikke længere er nødvendig , måske for at slette sine børn, eller at rydde op ressourcer. I Java giver systemet færdiggør metode, som udviklere kan tilsidesætte for at give tilsvarende funktionalitet . Den primære forskel er, at færdiggøre metoden kaldes , når runtime fastslår, at objektet har ingen yderligere henvisninger , og kan afhentes .
Anvendes med forsigtighed
færdiggøre kan giver funktionalitet svarende til C + + ' s destructor , bør det virkelig skal bruges med omtanke. Generelt samtidig tilsidesætte færdiggøre metode kan være helt fint for de fleste situationer , bør du ikke stole på det for at sikre ressourcer renses op på et bestemt tidspunkt . For eksempel, hvis du har en database forbindelse åben i et objekt, der er lukket i færdiggøre kan du stadig potentielt skabe for mange forbindelser til databasen og videregive databasens grænsen før affaldsindsamling har afsluttet alle de objekter - også selvom du ikke længere har referencer til dem overalt.