تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 14

نام تاپيک: garbage collection در دلفي و پاسكال؟

  1. #1
    پروفشنال oranoos_92's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    576

    14 garbage collection در دلفي و پاسكال؟

    سلام خدمت عزيزان
    دوستان من دارم بر روي
    garbage collection
    در دلفيو پاسكال تحقيق ميكنم در پاسكال كه نيست و لي گويا در دلفي اين متد هست كسي از دوستان يه مقاله يا توشيح در حد يك صفحه فارسي ميتونه براي اين مورد لطف كنه و واسه من بزاره
    تشكر

  2. #2
    حـــــرفـه ای F A R H A D's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    1,383

    پيش فرض

    سلام
    تکنیکی هست که منابعی از سیستم که در اختیار اشیایی قرار داره که به جایی ارجاع ندارند و برنامه نویس فراموش کرده اونها رو از بین ببره رو آزاد میکنه و به سیستم برمیگردونه
    البته در اینکه در دلفی به صورت خودکار وجود داره یا خیر مطمئن نیستم، به codegear.com سری بزنید جواب میگیرید
    موفق باشید

  3. این کاربر از F A R H A D بخاطر این مطلب مفید تشکر کرده است


  4. #3
    پروفشنال oranoos_92's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    576

    پيش فرض

    ممنون از شما من هم دنبال اين هستم كه ببينم دلفي آيا استفاده ميكنه يا نه
    تشكر

  5. #4
    حـــــرفـه ای F A R H A D's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    1,383

    پيش فرض

    بفرمایید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  6. این کاربر از F A R H A D بخاطر این مطلب مفید تشکر کرده است


  7. #5
    داره خودمونی میشه
    تاريخ عضويت
    Feb 2008
    پست ها
    161

    پيش فرض

    در دلفی Garbage Collector وجود نداره، و برنامه نویس باید خودش تمامی منابعی که ساخته را آزاد کنه، تنها استثناء در نوع داده string و Dynamic Array و Interfaceها هست؛ این داده ها Reference-counted هستند و بطور خودکار توسط مدیرحافظه دلفی آزاد میشند.

  8. این کاربر از VDeveloper بخاطر این مطلب مفید تشکر کرده است


  9. #6
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    در واقع این قابلیت از جمله امکانات ذاتی محیط 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 هستند.
    موفق باشید.

  10. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


  11. #7
    پروفشنال oranoos_92's Avatar
    تاريخ عضويت
    Jun 2007
    پست ها
    576

    پيش فرض

    با تشكر از دوستان عزيز اون لينكي كه دوست عزيز دادند را من خوندم و يكمي ازش فهميدم بچه ها كسي هست زبانش خوب باشه و از اين متن يه خلاصه واسه من بگه:
    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.
    تشكر

  12. #8
    داره خودمونی میشه
    تاريخ عضويت
    Feb 2008
    پست ها
    161

    پيش فرض

    در واقع این قابلیت از جمله امکانات ذاتی محیط CLR مایکروسافت است و به برنامه های تحت Microsoft Framework.Net ارائه میشود.
    این قابلیت فقط مخصوص دات نت نیست، مثلا جاوا هم Garbage Collection دارد. معمولا این قابلیت در زبان های Managed شده وجود داره.
    البته دلفی علاوه بر داشتن تعدادی نوع داده Reference-counted، از امکان تعریف Owner برای تعدادی کامپوننت هم پشتیبانی میکنه، که با آزاد شدن Owner، تمام کامپوننت های آن هم آزاد می شوند.

    با تشكر از دوستان عزيز اون لينكي كه دوست عزيز دادند را من خوندم و يكمي ازش فهميدم بچه ها كسي هست زبانش خوب باشه و از اين متن يه خلاصه واسه من بگه:
    لینک متن اصلی را می دادید بهتر بود.

  13. این کاربر از VDeveloper بخاطر این مطلب مفید تشکر کرده است


  14. #9
    حـــــرفـه ای F A R H A D's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    1,383

    پيش فرض

    البته دلفی علاوه بر داشتن تعدادی نوع داده Reference-counted، از امکان تعریف Owner برای تعدادی کامپوننت هم پشتیبانی میکنه، که با آزاد شدن Owner، تمام کامپوننت های آن هم آزاد می شوند.
    البته با در نظر گرفتن این مطلب که مالک تمام اشیا در دلفی TComponent و TObject هست حتی اگر ownerی براشون مشخص نشه، میشه گفت که وقتی اجرای برنامه به پایان میرسه تمام اشیا هم از بین میروند؟

  15. #10
    داره خودمونی میشه
    تاريخ عضويت
    Feb 2008
    پست ها
    161

    پيش فرض

    البته با در نظر گرفتن این مطلب که مالک تمام اشیا در دلفی TComponent و TObject هست حتی اگر ownerی براشون مشخص نشه، میشه گفت که وقتی اجرای برنامه به پایان میرسه تمام اشیا هم از بین میروند؟
    TComponent یا TObject مالک تمام اشیاء دلفی نیستند، بلکه کلاس های پایه، یا والد هستند. Owner شی ایی هست که مسئولیت آزاد سازی شی های Child خودش را برعهده داره. کلاس والد کلاسی هست که همه یا بعضی از سایر کلاس ها از آن مشتق می شوند.

    در ویندوز، وقتی Processایی بسته میشه، تمام فضای آدرس مربوط به آن آزاد میشه، یعنی چه Memory Leak داشته باشه، چه نداشته باشه، حافظه مورد استفاده اش آزاد میشه. Memory Leak بعد از بسته شدن برنامه معنی نداره، ولی در حین اجرای برنامه، باعث افزایش حافظه مصرفی برنامه، و کاهش منابع آزاد سیستم میشه. اهمیتش هم در برنامه های مختلف یکسان نیست، مثلا یک برنامه که فقط برای چند ثانیه اجرا میشه، اگر یک Memory Leak کوچک هم داشته باشه، خیلی مهم نیست، ولی مثلا اگر درایور کارت گرافیک شما Memory Leak داشته باشه، به سرعت منابع سیستم خورده میشند!

  16. 2 کاربر از VDeveloper بخاطر این مطلب مفید تشکر کرده اند


صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •