Er Det En Destructor i Java?

Bilde Av José Alejandro Cuffia På Unsplash

I Java sletter søppelkollektoren automatisk ubrukte objekter for å frigjøre minnet. Utviklere har ikke behov for å markere objekter for sletting, som er utsatt for feil og sårbare for minnelekkasje. Så Det er fornuftig Java har ingen destruktorer tilgjengelig.

hvis objektene har åpne kontakter, åpne filer eller databasetilkoblinger, kan ikke søppelinnsamleren gjenvinne disse ressursene. Vi kan frigjøre ressursene i nær metode og bruke try-endelig syntaks for å ringe metoden etterpå Før Java 7, for eksempel I/O-klassene FileInputStream og FileOutputStream. Fra Og Med Java 7 kan vi implementere autokloserbare grensesnitt og bruke try-with-resources statement for å skrive kortere og renere kode. MEN DET er mulig AT API-brukerne glemmer å ringe lukkemetoden, så sluttmetoden og Renere klassen kommer til å fungere som sikkerhetsnett. Men vær oppmerksom på at de ikke tilsvarer destructor.

det er ikke sikret at både sluttmetoden og Renere klassen vil løpe raskt. De får selv ingen sjanse til å kjøre før JVM utganger. Selv om Vi kunne ringe Systemet.runFinalization å foreslå AT JVM kjøre sluttføre metoder for objekter som venter for sluttføring, er det fortsatt ikke-deterministisk. Videre kan sluttføre metoden føre til ytelsesproblemer, vranglåser etc. Vi kan finne mer informasjon ved å se på en av våre artikler: A Guide to the finalize Method In Java. Per Java 9, Renere klasse er lagt til erstatte sluttføre metoden på grunn av ulempene det har. Som et resultat har vi bedre kontroll over tråden som gjør rengjøringshandlingene. Men java spec påpeker oppførselen til rengjøringsmidler under Systemet.exit er implementering spesifikk Og Java gir ingen garantier om rengjøring handlinger vil bli påberopt eller ikke.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.