Таних () ба дуусгах () хоёрын ялгаа

Агуулгын хүснэгт:

Таних () ба дуусгах () хоёрын ялгаа
Таних () ба дуусгах () хоёрын ялгаа

Видео: Таних () ба дуусгах () хоёрын ялгаа

Видео: Таних () ба дуусгах () хоёрын ялгаа
Видео: Сэтгэл хөдлөл, бодол ба энэ хоёрын ялгаа | OKOD PODCAST 2024, Долдугаар сарын
Anonim

Гол ялгаа – устгах () ба эцэслэх ()

Dispose () болон finalize () хоёрын гол ялгаа нь объектыг устгахаас өмнө dispose ()-г програмист тодорхой дуудаж байх ёстой, харин дуусгах ()-ыг хог цуглуулагч дуудаж байна.

Dispose () нь объектын эзэмшиж буй файл, урсгал гэх мэт удирдагдаагүй нөөцийг хаах эсвэл гаргах арга юм. Дуусгах нь тухайн объектыг устгахаас өмнө одоогийн объектын эзэмшиж буй удирдлагагүй нөөцийг цэвэрлэх үйлдлүүдийг хийх арга юм.

dipose() гэж юу вэ?

-ийн хамгийн чухал давуу талуудын нэг. NET framework нь хог хаягдлыг автоматаар цуглуулах боломжийг олгодог. Энэ нь ашиглагдаагүй объектуудын санах ойг автоматаар чөлөөлдөг. C, C++ гэх мэт програмчлалын хэл дээр програмист санах ойн менежментийг өөрөө хийх ёстой. Харин. NET фреймворк дээр бүтээгдсэн C гэх мэт хэлэнд хог цуглуулагчаар хангадаг. Энэ нь санах ойг удирдахад тусалдаг. Үүнийг удирдахгүй санах ойн нөөцийг гаргахад ашиглах боломжгүй. Энэ даалгаварыг биелүүлэхийн тулд dispose () аргыг ашиглаж болно.

Dispose () ба эцэслэх () хоёрын ялгаа
Dispose () ба эцэслэх () хоёрын ялгаа

Dispose () аргыг өгөгдлийн сангийн холболт, файл боловсруулагч гэх мэт нөөцийг гаргахад ашиглаж болно. Энэ аргыг автоматаар дууддаггүй. Тиймээс програмист хүн энэ аргыг хэрэгжүүлэх ёстой. Энэ аргыг дуудсан даруйд тодорхой удирдлагагүй нөөцийн санах ой чөлөөлөгдөнө. Энэ аргыг IDisposeable интерфэйс дээр зарласан.

Төгсгөлийн () гэж юу вэ?

Төгсгөлийн аргыг зөвхөн объектын лавлагааг цаашид ашиглахгүй үед хог цуглуулагч дууддаг. Энэ аргыг объектыг устгахын өмнөхөн дууддаг. Энэ аргыг устгагчийн тусламжтайгаар хэрэгжүүлдэг. Finalize аргыг java.lang.object ангид тодорхойлсон. Энэ аргыг хамгаалагдсан гэж зарласан. Бусад ангиуд нэвтрэхээс зайлсхийхийн тулд үүнийг олон нийтэд зарлаагүй. Ерөнхийдөө дуусгах арга нь санах ойг шууд чөлөөлөхгүй тул програмын гүйцэтгэлийг бууруулж чадна.

Dispose () болон finalize() хоёрын ижил төстэй байдал юу вэ?

Удирдлагагүй нөөцөд хуваарилагдсан санах ойг чөлөөлөхийн тулд dispose () болон finalize() хоёуланг нь ашиглаж болно

Dispose () болон finalize () хоёрын ялгаа нь юу вэ?

заялах () ба эцэслэх ()

Dispose () нь объектын эзэмшиж буй файл, урсгал зэрэг удирдагдаагүй нөөцийг хаах эсвэл гаргах арга юм. Төгсгөл гэдэг нь тухайн объектыг устгахаас өмнө одоогийн объектын эзэмшиж байгаа удирдаггүй нөөцийг цэвэрлэх үйлдлүүдийг хийх арга юм.
Зорилго
Устгах аргыг ашиглах үед удирдагдаагүй нөөцийг чөлөөлөхөд ашигладаг. Төгсгөлийн аргыг объектыг устгахаас өмнө удирдагдаагүй нөөцийг чөлөөлөхөд ашигладаг.
Тодорхойлогдсон интерфейс эсвэл анги
Dispose () нь IDisposable интерфэйс дээр тодорхойлогддог. Төгсгөлийн () нь java.lang.object ангид тодорхойлогдсон.
Дуудах арга
Устгах аргыг программист ашигладаг. Төгсгөлийн аргыг хог цуглуулагч ажиллуулдаг.
Хандалтын тодорхойлогч
Устгах арга нь нийтэд нээлттэй. Төгсгөлийн арга хамгаалагдсан.
Хурд
Устгах аргыг шууд ажиллуулна. Төгсгөлийн аргыг аажмаар ажиллуулна.
Гүйцэтгэл
Устгах нь хөтөлбөрийн гүйцэтгэлийг багасгахгүй. Төгсгөлийн арга нь програмын гүйцэтгэлийг бууруулж болзошгүй.

Тогтоон – устгах () ба эцэслэх ()

Энэ нийтлэлд C хэл дээрх dispose болон finalize аргуудын ялгааг авч үзсэн. Dispose () болон finalize () хоёрын ялгаа нь объектыг устгахаас өмнө dispose ()-г програмист тодорхой дуудаж байх ёстой, харин дуусгах ()-ыг хог цуглуулагч дуудаж байна.

Зөвлөмж болгож буй: