سلام خدمت عزيزان
دوستان من دارم بر روي
garbage collection
در دلفيو پاسكال تحقيق ميكنم در پاسكال كه نيست و لي گويا در دلفي اين متد هست كسي از دوستان يه مقاله يا توشيح در حد يك صفحه فارسي ميتونه براي اين مورد لطف كنه و واسه من بزاره
تشكر
سلام خدمت عزيزان
دوستان من دارم بر روي
garbage collection
در دلفيو پاسكال تحقيق ميكنم در پاسكال كه نيست و لي گويا در دلفي اين متد هست كسي از دوستان يه مقاله يا توشيح در حد يك صفحه فارسي ميتونه براي اين مورد لطف كنه و واسه من بزاره
تشكر
سلام
تکنیکی هست که منابعی از سیستم که در اختیار اشیایی قرار داره که به جایی ارجاع ندارند و برنامه نویس فراموش کرده اونها رو از بین ببره رو آزاد میکنه و به سیستم برمیگردونه
البته در اینکه در دلفی به صورت خودکار وجود داره یا خیر مطمئن نیستم، به codegear.com سری بزنید جواب میگیرید
موفق باشید
ممنون از شما من هم دنبال اين هستم كه ببينم دلفي آيا استفاده ميكنه يا نه
تشكر
بفرمایید:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در دلفی Garbage Collector وجود نداره، و برنامه نویس باید خودش تمامی منابعی که ساخته را آزاد کنه، تنها استثناء در نوع داده string و Dynamic Array و Interfaceها هست؛ این داده ها Reference-counted هستند و بطور خودکار توسط مدیرحافظه دلفی آزاد میشند.
سلام
در واقع این قابلیت از جمله امکانات ذاتی محیط CLR مایکروسافت است و به برنامه های تحت Microsoft Framework.Net ارائه میشود.
مثلاً میتوان در یک حلقه for هزار نمونه از شی ای ایجاد کرد، بدون هیچ آزاد سازی ای.
new classname).methodname)
(دستوری شبیه این در یک حلقه میتواند یک فاجعه RAM ای در ++VC یا VB6 باشد.)
"جمع اوری کننده حافظه هرز" خود مدیریت آزاد سازی منابع و استفاده مجدد از اشیا و defrag (یکپارچه سازی) حافظه را بر عهده دارد.
زبان دلفی هم یک نسخه دات نتی به نام Delphi.Net دارد که البته توسط مایکروسافت ارائه نشده و باید بعد از نصب VS به صورت جداگانه روی آن نصب شود.
زبانهای C#.Net و VB.Net و VC++.Net و #J از جمله نمونه های بارز تحت Microsoft Framework.Net هستند.
موفق باشید.
با تشكر از دوستان عزيز اون لينكي كه دوست عزيز دادند را من خوندم و يكمي ازش فهميدم بچه ها كسي هست زبانش خوب باشه و از اين متن يه خلاصه واسه من بگه:
تشكرnotice the use of the 'with' statement - you can use a safe without having to declare a local variable for it. When you create a component just pass the 'safe' component as the owner to the constructor. When the execution of the code reaches the 'end' of the 'with' statement the reference count of iobjectsafe will hit 0, the destructor of tobjectsafe will be called and all the components and objects it owns will be freed. So now you have the best of both worlds - you can create an object when you need it, be sure it will be automaticaly destroyed and know exactly when it will happen.
The 'new'/'dispose' methods of iobjectsafe use the 'untyped' pointer type to return a reference to an object - this will cause exception if you mismatch the types of the reference and the actual object created (there won't be a memory leak though), but it is flexible and shorter to type. If you want to play it safe use the 'guard' function instead.
You can also create one iobjectsafe in the constructor of a complex object which uses a lot of internal objects so you don't need to explicitly free them in the destructor.
این قابلیت فقط مخصوص دات نت نیست، مثلا جاوا هم Garbage Collection دارد. معمولا این قابلیت در زبان های Managed شده وجود داره.در واقع این قابلیت از جمله امکانات ذاتی محیط CLR مایکروسافت است و به برنامه های تحت Microsoft Framework.Net ارائه میشود.
البته دلفی علاوه بر داشتن تعدادی نوع داده Reference-counted، از امکان تعریف Owner برای تعدادی کامپوننت هم پشتیبانی میکنه، که با آزاد شدن Owner، تمام کامپوننت های آن هم آزاد می شوند.
لینک متن اصلی را می دادید بهتر بود.با تشكر از دوستان عزيز اون لينكي كه دوست عزيز دادند را من خوندم و يكمي ازش فهميدم بچه ها كسي هست زبانش خوب باشه و از اين متن يه خلاصه واسه من بگه:
البته با در نظر گرفتن این مطلب که مالک تمام اشیا در دلفی TComponent و TObject هست حتی اگر ownerی براشون مشخص نشه، میشه گفت که وقتی اجرای برنامه به پایان میرسه تمام اشیا هم از بین میروند؟البته دلفی علاوه بر داشتن تعدادی نوع داده Reference-counted، از امکان تعریف Owner برای تعدادی کامپوننت هم پشتیبانی میکنه، که با آزاد شدن Owner، تمام کامپوننت های آن هم آزاد می شوند.
TComponent یا TObject مالک تمام اشیاء دلفی نیستند، بلکه کلاس های پایه، یا والد هستند. Owner شی ایی هست که مسئولیت آزاد سازی شی های Child خودش را برعهده داره. کلاس والد کلاسی هست که همه یا بعضی از سایر کلاس ها از آن مشتق می شوند.البته با در نظر گرفتن این مطلب که مالک تمام اشیا در دلفی TComponent و TObject هست حتی اگر ownerی براشون مشخص نشه، میشه گفت که وقتی اجرای برنامه به پایان میرسه تمام اشیا هم از بین میروند؟
در ویندوز، وقتی Processایی بسته میشه، تمام فضای آدرس مربوط به آن آزاد میشه، یعنی چه Memory Leak داشته باشه، چه نداشته باشه، حافظه مورد استفاده اش آزاد میشه. Memory Leak بعد از بسته شدن برنامه معنی نداره، ولی در حین اجرای برنامه، باعث افزایش حافظه مصرفی برنامه، و کاهش منابع آزاد سیستم میشه. اهمیتش هم در برنامه های مختلف یکسان نیست، مثلا یک برنامه که فقط برای چند ثانیه اجرا میشه، اگر یک Memory Leak کوچک هم داشته باشه، خیلی مهم نیست، ولی مثلا اگر درایور کارت گرافیک شما Memory Leak داشته باشه، به سرعت منابع سیستم خورده میشند!
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)