Porovnávacia tabuľka
Základ pre porovnanie | zlikvidovať () | dokončiť () |
---|---|---|
definovaný | Metóda dispose () je definovaná v rozhraní rozhrania IDisposable. | Metóda finalize () id je definovaná v triede java.lang.object. |
syntax | public void Vyradiť () { Kód zlikvidujte tu } | chrániť void finalize () { // finalizačného kódu tu } |
vyvolaný | Metóda dispose () je vyvolaná používateľom. | Metóda finalize () je vyvolaná zberačom odpadu. |
účel | Metóda dispose () sa používa na uvoľnenie nespravovaných zdrojov vždy, keď je vyvolaná. | Metóda finalize () sa používa na uvoľnenie nespravovaných zdrojov pred zničením objektu. |
uskutočnenie | Metóda dispose () sa má implementovať vždy, keď existuje metóda close (). | Spôsob finalize () sa má implementovať pre nespravované zdroje. |
Špecifikátor prístupu | Metóda dispose () je deklarovaná ako verejná. | Metóda finalize () je deklarovaná ako súkromná. |
akčné | Metóda dispose () je rýchlejšia a okamžite disponuje objektom. | Spôsob finalizácie je pomalší v porovnaní s likvidáciou |
výkon | Metoda disponuje () vykonáva okamžitú akciu, preto neovplyvňuje výkon webových stránok. | Metóda finalize (), ktorá je pomalšia, ovplyvňuje výkonnosť webových stránok. |
Definícia likvidácie ()
Metóda dispose () uvoľňuje nespravované zdroje, ktoré sú držané objektom triedy. Nespravovanými prostriedkami sú súbory, dátové pripojenia atď. Metóda dispose () je deklarovaná v rozhraní IDisposeable a je implementovaná triedou implementáciou rozhrania IDisposable. Táto metóda sa nevolá automaticky. Programátor ju musí implementovať manuálne, keď vytvárate vlastnú triedu, ktorú použijú ostatní. Metóda má nasledujúcu syntax:
public void dispose () {// Zrušte kód tu}
Vo vyššie uvedenej syntaxe môžete pozorovať, že metóda je deklarovaná ako verejná. Je to preto, lebo táto metóda je definovaná v rozhraní IDisposable a musí byť implementovaná triedou implementujúcou toto rozhranie. Preto, aby bola prístupnosť implementačnej triedy prístupná, je táto metóda vyhlásená za verejnú.
Táto metóda sa vyvolá ručne pomocou kódu programu, ktorý je implementovaný na vyvolanie. Výkonnosť metód je rýchla a okamžite uvoľňuje zdroje držané objektom triedy.
Definícia finalizácie ()
Metóda finalize () je definovaná v triede objektov . Používa sa na čistenie. Táto metóda sa nazýva zberač odpadkov, keď sa referencia objektu dlhodobo nepoužíva. Garbage collector automaticky uvoľňuje spravované prostriedky, ale ak chcete oslobodiť nespravované zdroje, ako sú súborov, dátové pripojenia atď., Metóda finalizácie musí byť implementovaná manuálne. Zberač odpadkov vyvolá metódu dokončiť () tesne pred úplným zničením objektu.
Syntax metódy finalize ():
chrániť void finalize () {// finalizačný kód tu}
Vo vyššie uvedenej syntaxe je metóda finalize () vyhlásená za chránenú. Dôvodom je, že finalizácia metódy () nesmie byť prístupná zvonku triedy a musí byť prístupná len zberaču odpadu.
Metóda finalize () ovplyvňuje náklady na výkon, pretože okamžite nezbavuje pamäť. V metóde C # sa finalizácia automaticky nazýva deštruktormi.
Kľúčové rozdiely Medzi dispos () a finalizovať ()
- Metóda dispose () je definovaná v rozhraní IDisposable . Na druhej strane metóda finalize () je definovaná v objekte triedy.
- Metóda dispose () musí byť manuálne vyvolaná vnútri kódu programátorom, zatiaľ čo metóda finalize je automaticky vyvolaná zberačom odpadu predtým, než zničí objekt.
- Metodológia likvidácie by mohla byť vyvolaná kedykoľvek, zatiaľ čo finalizácia metódy je vyvolaná zberačom odpadu, keď zistí, že tento objekt nebol dlhodobo odkazovaný.
- Metóda dispose () je implementovaná v triede po implementácii rozhrania IDisposable. Spôsob finalize () musí byť implementovaný iba pre nespravované zdroje, pretože spravované zdroje sú automaticky zbavené zberačmi odpadu.
- Zadávací špecifikátor metódy dispose () je verejný, ako je definovaný v rozhraní IDisposable a bude implementovaný triedou implementujúcou toto rozhranie, preto by mala byť verejná. Na druhej strane metóda finalize () má chránený špecifikátor prístupu, takže by nemal byť prístupný žiadnemu členovi mimo triedy.
- Metóda dispose () je rýchla a objekt okamžite uvoľní, preto nemá vplyv na výkonové náklady. Spôsob finalize () je pomalší a neobmedzuje prostriedky, ktoré má objekt okamžite.
záver:
Odporúča sa použiť metodu dispose () pre metódu finalize (), pretože je rýchlejšia než finalizácia. Tiež by sa to mohlo kedykoľvek nazvať, ak to bude potrebné.