? Java bruker en søppelrydding system for minnehåndtering . Selv om dette tar en eksepsjonell belastning av utbygger - han har ikke lenger å sikre gjenstander fjernes manuelt fra minnet når de ikke lenger er i bruk - det kan også ta bort noe av funksjonaliteten som utviklere fra annen bakgrunn kan være vant til . Mens sluttføre funksjonaliteten er ikke akkurat det samme som en C + + destructor , kan det betraktes nærmest en analog Java-språket gir. Rask oversikt over Garbage Collection
søppel samlingen er en av de mer avanserte emner i Java -programmering . Strengt tatt kan Java-utviklere gå hele karrieren uten at du trenger å vite mye om søpla solfangeren og hvordan den fungerer. I hovedsak er hvert objekt laget i et Java- program registrert med Java runtime , sammen med en telling av alle steder det er en eksisterende referanse til dette objektet. Når et objekt er ikke lenger henvist til av andre objekter , markerer systemet det for samlingen , og neste gang garbage collector går , den sletter dette objektet.
Basic Memory Management i C + +
med
Ting er annerledes i andre programmeringsspråk , som C + + , for eksempel. I C + + , styrer utvikler når et objekt fjernes fra minnet , i motsetning til systemet. Dette er kjent som " deterministisk minnehåndtering , " og det har både sine fordeler og ulemper . Den primære pluss side til dette er at utbygger vet nøyaktig når i koden objektet er slettet. Men det er ekstremt lett å slette et objekt som kan fortsatt være i bruk andre steder i koden.
Destructors og sluttføre
I C + + , kan utviklere legge en destructor til en klasse , som er en metode som kalles hver gang et objekt er slettet. Dette lar utvikleren å kjøre kode når objektet er ikke lenger nødvendig, kanskje for å slette sine barn eller å rydde opp ressurser . I Java , gir systemet sluttføre metoden, som utviklere kan overstyre å gi tilsvarende funksjonalitet . Den primære forskjellen er at sluttføre metoden kalles når runtime bestemmer at objektet har ingen ytterligere referanser og kan samles .
Brukes med forsiktighet
Mens sluttføre kan gi funksjonalitet som ligner på C + + ' s destructor , bør det egentlig brukes med forsiktighet. Generelt sett, mens overstyre sluttføre metoden kan være helt greit for de fleste situasjoner , bør du ikke stole på det for å sikre ressurser er ryddet opp på et bestemt tidspunkt . For eksempel , hvis du har en database tilkobling åpen i et objekt som er lukket i ferdigstille , kan du likevel potensielt skape for mange tilkoblinger til databasen og passere database grense før garbage collector har sluttført alle objektene - selv om du ikke lenger har referanser til dem hvor som helst.