Цомпарисон Цхарт
Основа за поређење | диспосе () | финализе () |
---|---|---|
Дефинисано | Метода диспосе () је дефинисана у интерфејсу ИДиспосабле интерфејса. | ИД финализе () ид дефинисан у јава.ланг.објецт класи. |
Синтакса | публиц воид Диспосе () { // Диспосе цоде хере } | протецтед воид финализе () { // овде финализира код } |
Инвокед | Корисник покреће метод диспосе (). | Сакупљач смећа позива методу финализе (). |
Сврха | Метода диспосе () се користи за ослобађање неуправљаних ресурса кад год се позове. | Метода финализе () се користи за ослобађање неуправљаних ресурса прије него што је објект уништен. |
Имплементација | Метода диспосе () се имплементира кад год постоји цлосе () метода. | Метод финализе () треба да се имплементира за неуправљане ресурсе. |
Спецификатор приступа | Метода диспосе () је декларисана као јавна. | Метода финализе () је декларисана као приватна. |
поступак | Метода диспосе () је бржа и тренутно располаже објектом. | Финализирање методе је спорије у односу на располагање |
Перформансе | Метода располаже () извршава тренутну акцију, стога не утиче на перформансе веб сајтова. | Метод финализе () који је спорије утиче на перформансе веб-локација. |
Дефиниција диспос ()
Диспосе () метода ослобађа неуправљане ресурсе које држи објект класе. Неуправљани ресурси су датотеке, податковне везе, итд. Метода диспосе () је декларисана у интерфејсу ИДиспосеабле и имплементирана је од стране класе имплементирањем ИДиспосабле интерфејса. Овај метод се не позива аутоматски. Програмер га мора ручно имплементирати када креирате прилагођену класу коју ће користити други. Метода има следећу синтаксу:
публиц воид диспосе () {/ / Диспосе цоде хере}
У горе наведеној синтакси, можете приметити да је метода декларисана као јавна. То је зато што је овај метод дефинисан у интерфејсу ИДиспосабле и мора бити имплементиран од стране класе која имплементира овај интерфејс. Дакле, да би се обезбедила приступачност класи имплементације, метода је проглашена јавном.
Овај метод се позива ручно помоћу кода програма који је имплементиран за позивање. Перформансе метода су брзе и одмах ослобађају ресурсе које држи објекат класе.
Дефиниција финализације ()
Метода финализе () је дефинисана у класи објекта . Користи се за активности чишћења. Овај метод се позива од стране сакупљача смећа када се референца објекта дуго не користи. Сакупљач смећа аутоматски ослобађа управљане ресурсе, али ако желите да ослободите неуправљане ресурсе као што су ручка датотеке, веза за податке итд., Метода финализације мора бити имплементирана ручно. Сакупљач смећа позива методу финализе () непосредно пре него што потпуно уништи објекат.
Синтакса методе финализе ():
протецтед воид финализе () {// овде финализира код}
У синтакси изнад, метода финализе () је декларисана као заштићена. Разлог за то је да метода финализе () не смије бити доступна изван класе, и мора бити доступна само сакупљачу смећа.
Метода финализе () утиче на трошкове изведбе јер не ослобађа меморију одмах. У Ц # методу се финализира аутоматски са деструкторима.
Кључне разлике између диспос () и финализирања ()
- Метода диспосе () је дефинисана у интерфејсу ИДиспосабле . С друге стране, метода финализе () је дефинисана у објекту класе.
- Метод диспосе () мора бити ручно позван унутар кода од стране програмера, док је финализирање метода аутоматски позвано од стране сакупљача смећа пре него што уништи објекат.
- Метода диспосе може бити позвана у било које време, док се метода финализе позива од стране сакупљача смећа када открије да тај објекат није био референциран дуго времена.
- Метода диспосе () је имплементирана у класи након имплементације ИДиспосабле интерфејса. Метод финализе () мора бити имплементиран само за неуправљане ресурсе јер се управљачки ресурси аутоматски ослобађају од стране сакупљача смећа.
- Спецификатор приступа методе диспосе () је јаван јер је дефинисан у интерфејсу ИДиспосабле и имплементиран од стране класе која имплементира овај интерфејс, стога би требало да буде јавни. С друге стране, метода финализе () има заштићени спецификатор приступа тако да не би требало да буде доступан ниједном члану изван класе.
- Метода диспосе () је брза и одмах ослобађа објекат, тако да не утиче на цену перформанси. Метод финализе () је спорији и не ослобађа ресурсе које објекат тренутно држи.
Закључак:
Предлаже се да се методом диспосе () користи метода финализе () јер је бржа од финализације. Такође, може се звати било када, када је то потребно.