Różnica między usuwaniem () a finalizowaniem ()

Spisu treści:

Różnica między usuwaniem () a finalizowaniem ()
Różnica między usuwaniem () a finalizowaniem ()

Wideo: Różnica między usuwaniem () a finalizowaniem ()

Wideo: Różnica między usuwaniem () a finalizowaniem ()
Wideo: Advisory Council Meeting, 10 September 2014, Rome 2024, Lipiec
Anonim

Kluczowa różnica – usuń () vs sfinalizuj ()

Kluczowa różnica między dispose() i finalize() polega na tym, że funkcja dispose() musi być jawnie wywoływana przez programistę, podczas gdy finalize() jest wywoływana przez garbage collector przed zniszczeniem obiektu.

Dispose() to metoda zamykania lub zwalniania niezarządzanych zasobów, takich jak pliki, strumienie przechowywane przez obiekt. Finalize to metoda wykonywania operacji czyszczenia na niezarządzanych zasobach przechowywanych przez bieżący obiekt, zanim obiekt zostanie zniszczony.

Co to jest dispose()?

Jedna z najważniejszych zalet programu. NET Framework polega na tym, że zapewnia automatyczne usuwanie śmieci. Automatycznie zwalnia pamięć obiektów, które nie są używane. W językach programowania takich jak C i C++ programista musi sam poradzić sobie z zarządzaniem pamięcią. Ale w językach takich jak C, które są oparte na. NET Framework, udostępnia moduł odśmiecania pamięci. Pomaga zarządzać pamięcią. Nie można go użyć do zwolnienia zasobów pamięci niezarządzanej. Do wykonania tego zadania można użyć metody dispose ().

Różnica między usuwaniem () a finalizowaniem ()
Różnica między usuwaniem () a finalizowaniem ()

Metoda dispose() może służyć do zwalniania zasobów, takich jak połączenia z bazą danych, programy obsługi plików itp. Ta metoda nie jest wywoływana automatycznie. Dlatego programista powinien zaimplementować tę metodę. Zaraz po wywołaniu tej metody pamięć dla określonego niezarządzanego zasobu zostanie zwolniona. Ta metoda jest zadeklarowana w interfejsie IDisposeable.

Co to jest finalizacja ()?

Metoda finalize jest wywoływana przez garbage collector, gdy odwołanie do obiektu nie jest dalej używane. Ta metoda jest wywoływana tuż przed zniszczeniem obiektu. Ta metoda jest realizowana za pomocą destruktora. Metoda finalize jest zdefiniowana w klasie java.lang.object. Ta metoda jest zadeklarowana jako chroniona. Nie jest zadeklarowany jako publiczny, aby uniknąć dostępu przez inne klasy. Ogólnie rzecz biorąc, metoda finalizacji może zminimalizować wydajność programu, ponieważ nie zwalnia natychmiast pamięci.

Jakie jest podobieństwo między dispose() i finalize()?

Zarówno dispose(), jak i finalize() mogą być użyte do zwolnienia pamięci przydzielonej dla niezarządzanego zasobu

Jaka jest różnica między usuwaniem () a finalize()?

dispose () vs finalizuj ()

Dispose() to metoda zamykania lub zwalniania niezarządzanych zasobów, takich jak pliki, strumienie przechowywane przez obiekt. Finalizowanie to metoda wykonywania operacji czyszczenia na niezarządzanych zasobach przechowywanych przez bieżący obiekt, zanim obiekt zostanie zniszczony.
Cel
Metoda dispose służy do zwalniania niezarządzanych zasobów po jej wywołaniu. Metoda finalize służy do zwalniania niezarządzanych zasobów przed zniszczeniem obiektu.
Zdefiniowany interfejs lub klasa
Utylizacja () jest zdefiniowana w interfejsie IDisposable interface. Sfinalizowanie () jest zdefiniowane w klasie java.lang.object.
Wywołanie metody
Metoda usuwania jest wywoływana przez programistę. Metoda finalizacji jest wywoływana przez garbage collector.
Specyfikator dostępu
Metoda usuwania jest publiczna. Metoda finalizacji jest chroniona.
Prędkość
Metoda usuwania jest wywoływana natychmiast. Metoda finalizacji jest wywoływana powoli.
Wydajność
Utylizacja nie zminimalizuje wydajności programu. Metoda finalizacji może zminimalizować wydajność programu.

Podsumowanie – usuwanie () vs finalizowanie ()

W tym artykule omówiono różnicę między metodami usuwania i finalizowania w języku C. Różnica między dispose() i finalize() polega na tym, że dispose() musi być jawnie wywoływane przez programistę, podczas gdy finalize() jest wywoływane przez garbage collector przed zniszczeniem obiektu.

Zalecana: