تفاوت کلیدی - دور ریختن () در مقابل نهایی کردن ()
تفاوت کلیدی بین dispose () و finalize () در این است که dispose () باید به صراحت توسط برنامه نویس فراخوانی شود در حالی که نهایی () توسط زباله جمع کننده قبل از تخریب شیء فراخوانی می شود.
Dispose () روشی است برای بستن یا انتشار منابع مدیریت نشده مانند فایلها، جریانهای نگهداری شده توسط یک شی. نهایی کردن روشی برای انجام عملیات پاکسازی منابع مدیریت نشده است که توسط شی فعلی نگهداری می شود قبل از اینکه شیء از بین برود.
dispose() چیست؟
یکی از مهمترین مزایای.چارچوب NET این است که جمعآوری خودکار زباله را فراهم میکند. به طور خودکار حافظه اشیایی که استفاده نمی شوند را آزاد می کند. در زبان های برنامه نویسی مانند C و C++، برنامه نویس باید به تنهایی مدیریت حافظه را انجام دهد. اما در زبان هایی مانند سی شارپ که بر روی فریم ورک دات نت ساخته شده است، جمع کننده زباله را فراهم می کند. به مدیریت حافظه کمک می کند. نمی توان از آن برای آزادسازی منابع حافظه مدیریت نشده استفاده کرد. برای دستیابی به این کار می توان از روش dispose () استفاده کرد.
روش dispose () را می توان برای انتشار منابعی مانند اتصالات پایگاه داده، کنترل کننده فایل و غیره استفاده کرد. این روش به طور خودکار فراخوانی نمی شود. بنابراین برنامه نویس باید این روش را پیاده سازی کند. به محض فراخوانی این روش، حافظه برای منبع مدیریت نشده خاص آزاد می شود. این روش در رابط IDisposeable اعلام شده است.
نهایی شدن () چیست؟
روش نهایی فقط زمانی توسط جمعآورنده زباله فراخوانی میشود که ارجاع به یک شی بیشتر استفاده نشود. این روش درست قبل از تخریب شی نامیده می شود. این روش با کمک تخریبگر اجرا می شود. متد finalize در کلاس java.lang.object تعریف شده است. این روش به عنوان محافظت شده اعلام شده است. برای جلوگیری از دسترسی سایر کلاس ها به عنوان عمومی اعلام نشده است. به طور کلی، روش نهایی می تواند عملکرد برنامه را به حداقل برساند زیرا حافظه را فوراً آزاد نمی کند.
شباهت بین dispose () و finalize() چیست؟
هر دو dispose () و finalize() می توانند برای آزادسازی حافظه اختصاص داده شده برای یک منبع مدیریت نشده استفاده شوند
تفاوت بین dispose () و finalize() چیست؟
dispose () vs finalize () |
|
dispose () روشی برای بستن یا انتشار منابع مدیریت نشده مانند فایلها، جریانهایی است که توسط یک شیء نگهداری میشوند. | Finalize روشی برای انجام عملیات پاکسازی منابع مدیریت نشده توسط شی فعلی قبل از نابودی شی است. |
هدف | |
روش دفع برای آزاد کردن منابع مدیریت نشده در هنگام فراخوانی استفاده می شود. | روش نهایی برای آزاد کردن منابع مدیریت نشده قبل از نابودی شی استفاده می شود. |
رابط یا کلاس تعریف شده | |
dispose () در رابط IDisposable رابط تعریف شده است. | نهایی () در کلاس java.lang.object تعریف شده است. |
روش فراخوانی | |
روش دفع توسط برنامه نویس فراخوانی می شود. | روش نهایی توسط زباله جمع کن فراخوانی می شود. |
Access Specifier | |
روش دفع عمومی است. | روش نهایی محافظت شده است. |
سرعت | |
روش دفع فوراً فراخوانی می شود. | روش نهایی به آرامی فراخوانی می شود. |
عملکرد | |
دور ریختن عملکرد برنامه را به حداقل نمی رساند. | روش نهایی ممکن است عملکرد برنامه را به حداقل برساند. |
خلاصه - دور ریختن () در مقابل نهایی کردن ()
این مقاله به تفاوت بین روش های دفع و نهایی کردن در سی شارپ پرداخته است. تفاوت بین dispose () و finalize () در این است که dispose () باید به صراحت توسط برنامه نویس فراخوانی شود در حالی که نهایی () توسط زباله جمع کننده قبل از تخریب شیء فراخوانی می شود.