? Java använder ett system för sophämtning för minneshantering . Även detta tar en exceptionell belastning av utvecklaren - han inte längre har att se föremål avlägsnas manuellt från minnet när de inte längre är i bruk - det kan också ta bort en del funktionalitet som utvecklare från andra bakgrunder kan vara vana vid . Medan färdigställa funktionaliteten är inte exakt samma som en C + + destructor , kan det anses vara närmast en analog Java tillhandahåller . Snabb överblick av Garbage Collection
Sophämtning är en av de mer avancerade ämnen i Java -programmering . Strängt taget kan Java-utvecklare gå hela sin karriär utan att någonsin behöva veta mycket om sophämtare och hur den fungerar . I grunden är varje objekt som skapats i ett Java -program registreras med Java runtime , tillsammans med ett antal av alla de platser det finns en befintlig referens till det objektet . När ett objekt är inte längre hänvisas till andra eventuella objekt , markerar systemet det för insamling , och nästa gång sophämtare kör , det tar bort det objektet .
Basic Memory Management i C + +
saker är olika i andra programmeringsspråk , till exempel C + + , till exempel. I C + + , styr utvecklaren när ett objekt tas bort från minnet , i motsats till systemet. Detta är känt som " deterministisk minneshantering , " och det har både sina för och nackdelar . Den primära positiva sidan till detta är att utvecklaren vet exakt när i koden föremålet tas bort. Men det är extremt lätt att ta bort ett objekt som fortfarande kan vara i bruk på andra ställen i koden .
Destructors och slutföra
C + + , kan utvecklare lägga en destructor till en klass , vilket är en metod som anropas när ett objekt tas bort . Detta tillåter utvecklaren att köra kod när objektet inte längre behövs , kanske för att ta bort sina barn eller för att rensa upp resurser. I Java , erbjuder systemet slutföra metoden , som utvecklare kan åsidosätta att erbjuda liknande funktionalitet . Den främsta skillnaden är att slutföra metoden anropas när runtime bestämmer att objektet har inga ytterligare referenser och kan samlas .
Används med försiktighet
slutföra kan tillhandahålla funktionalitet liknar C + + ' s destructor , borde det verkligen användas med försiktighet . Generellt sett , samtidigt åsidosätta slutföra metoden kan vara mycket bra för de flesta situationer bör du inte lita på det för att säkerställa resurser städas upp vid en viss tidpunkt . Till exempel , om du har en databas anslutning öppen i ett objekt som är stängd i slutföra , kan du fortfarande potentiellt skapa alltför många anslutningar till databasen och passera databasens gränsen innan sophämtare har slutfört alla objekt - även om du inte längre har referenser till dem någonstans .