نمایش نتایج 1 تا 7 از 7

نام تاپیک: آزاد سازی حافظه RAM, Buffer بعد از هر فرایند

  1. #1

    آزاد سازی حافظه RAM, Buffer بعد از هر فرایند

    دوستان یه سوالی داشتم میخواستم بدونم استفاده از روش Dispose برای آزاد سازی حافظه RAM, cash, Buffer که به باقی قسمت های برنامه آسیب نزنه خوب هستش یا نه چون برنامه بعد کار کردن با یک سیستم فوق ضعیف بعد از چند تا سند زدن چون چندین عملیات انجام میده RAM و Buffer اش پر میشه و باعث میشه دکمه Enter روی برنامه کار نکنه میخواستم بدونم استفاده از Dispose مانند دستور زیر عقلانی هستش یا خیر.
    اگه روش دیگه برای آزاد سازی سیستم هستش به بنده بگید ممنون میشم.

    DataTable dt = TblMedah.Money_Medah(Medah);
    dt.Dispose();
    آخرین ویرایش به وسیله davidrobert : دوشنبه 30 اردیبهشت 1398 در 23:56 عصر

  2. #2

    نقل قول: آزاد سازی حافظه RAM,Buffer,Cash بعد از هر فرایند

    در دات نت نیاز به Dispose ندارید مگر اینکه در حال کار با یک کتابخانه Unmanaged باشید. منظور کتابخانه هایی هست که با زبانهایی مثل ++C و C نوشته شده باشه. اصلا نباید کلاس EF رو Dispose کنید چون همه ی اطلاعاتی که از وضعیت دیتابیس جمع آوری کرده از بین میره و پرفورمنس رو کمتر میکنه. مخصوصا وقتی در دسکتاپ هستید. در وب هم با تزریق وابستگی ها طول عمر EF به اندازه ی هر Request هست.

    مشکل پرفورمنس شما جای دیگری هست.

  3. #3

    نقل قول: آزاد سازی حافظه RAM,Buffer,Cash بعد از هر فرایند

    سلام دوست عزیز بنده از کدنویسی سه لایه ADO به صورت پروسیجر استفاده میکنم و از EF اصلا استفاده نمیکنم.
    با ADO چی همه چیز از بین میره اطلاعات یا نه

  4. #4

    نقل قول: آزاد سازی حافظه RAM,Buffer,Cash بعد از هر فرایند

    نقل قول نوشته شده توسط davidrobert مشاهده تاپیک
    سلام دوست عزیز بنده از کدنویسی سه لایه ADO به صورت پروسیجر استفاده میکنم و از EF اصلا استفاده نمیکنم.
    با ADO چی همه چیز از بین میره اطلاعات یا نه
    فلسفه dispose کردن اشیاء ایجاد شده در سی شارپ به این منظور هست که به GC اعلام میکنه که منابع اشغال شده توسط شی مورد نظر را زودتر از Heap خارج کنه !
    حالا هر شی ای که از Object ارث بری کرده باشه ویا یک شی مقداری باشه که توسط ref رفرنس شی ارسال شده باشه می تونن از dispose استفاده کنند ولی همانطور که دوست عزیزمون هم اشاره کرد معمولا کاربردی نداره به این علت که احتمال از دست دادن داده ها خیلی زیاد هست وهمچنین در برنامه نویسی managed توصیه نمیشه استفاده از finalize , dispose
    بنابراین در صورتی که بعد از چندبار اجرا شدن یک قسمت از برنامه دچار افت شدید پرفورمنس می شوید بهتره که کدهاتون را یک refactor کنید استفاده از آبجکتهای static , singletone و البته یکی از چالش های مهم برنامه نویسی سی شارپ به Boxing / Unboxing ها خیلی توجه داشته باشید.

  5. #5

    نقل قول: آزاد سازی حافظه RAM,Buffer,Cash بعد از هر فرایند

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    فلسفه dispose کردن اشیاء ایجاد شده در سی شارپ به این منظور هست که به GC اعلام میکنه که منابع اشغال شده توسط شی مورد نظر را زودتر از Heap خارج کنه !
    حالا هر شی ای که از Object ارث بری کرده باشه ویا یک شی مقداری باشه که توسط ref رفرنس شی ارسال شده باشه می تونن از dispose استفاده کنند ولی همانطور که دوست عزیزمون هم اشاره کرد معمولا کاربردی نداره به این علت که احتمال از دست دادن داده ها خیلی زیاد هست وهمچنین در برنامه نویسی managed توصیه نمیشه استفاده از finalize , dispose
    بنابراین در صورتی که بعد از چندبار اجرا شدن یک قسمت از برنامه دچار افت شدید پرفورمنس می شوید بهتره که کدهاتون را یک refactor کنید استفاده از آبجکتهای static , singletone و البته یکی از چالش های مهم برنامه نویسی سی شارپ به Boxing / Unboxing ها خیلی توجه داشته باشید.
    با تشکر از دوستان عزیز بنده از boxing\unboxing توجه کامل کردم و میتونم بگم کاهش شدید کدنویسی خیلی دارم و همه دستورات رو یک بار نوشتم و در کل برنامه صدا میزنم و استفاده میکنم و هرچقدر به مشتری ام میگم سیستم ضعیف باز میگه یه کاری کن با این حال که روزی صد میلیون تومان در میارن باز دست به خرید سیستم خوب نمیزنن. ولی با توجه به تجربات شما به این نتیجه رسیدم استفاده کردن از dispose فایده نداره. دومی بدبختی من این هستش اون ها اصلا سیستم شون خاموش نمیکنن کاربران مثلا تا یک هفته سیستم روزشن و برنامه باز هستش.
    که اینها هم هستش باعث میشه سیستم ضعف بیاره باز خیلی ممنون از راهنمای تان

  6. #6

    نقل قول: آزاد سازی حافظه RAM,Buffer,Cash بعد از هر فرایند

    نقل قول نوشته شده توسط davidrobert مشاهده تاپیک
    با تشکر از دوستان عزیز بنده از boxing\unboxing توجه کامل کردم و میتونم بگم کاهش شدید کدنویسی خیلی دارم و همه دستورات رو یک بار نوشتم و در کل برنامه صدا میزنم و استفاده میکنم و هرچقدر به مشتری ام میگم سیستم ضعیف باز میگه یه کاری کن با این حال که روزی صد میلیون تومان در میارن باز دست به خرید سیستم خوب نمیزنن. ولی با توجه به تجربات شما به این نتیجه رسیدم استفاده کردن از dispose فایده نداره. دومی بدبختی من این هستش اون ها اصلا سیستم شون خاموش نمیکنن کاربران مثلا تا یک هفته سیستم روزشن و برنامه باز هستش.
    که اینها هم هستش باعث میشه سیستم ضعف بیاره باز خیلی ممنون از راهنمای تان
    به هر حال با توجه به اینکه قطعا خیلی زحمت کشیدید برای طراحی نرم افزار، واین صحبت من زیر سوال بردن کار شما نیست، باید توجه داشته باشید که زمانی تست های black test/white test را انجا میدید باید در بدترین شرایط ممکن بالاترین بازدهی را داشته باشید قطعا در این زمان شما می توانید به یک بازدهی ایده آل دست پیدا کنید.
    به هرحال در صورتی که تمایل داشتید کدهایی که احساس میکنید که بازدهی کمتری دارند را در اینجا قرار بدید تا در صورت لزوم بتونیم بهتر کمک تون کنیم البته ناگفته نماند که این اشکال یکی از شایع ترین اشکالات در نرم افزار های تولید شده با سی شارپ و جاوا هست.

  7. #7

    نقل قول: آزاد سازی حافظه RAM,Buffer,Cash بعد از هر فرایند

    نقل قول نوشته شده توسط farhad_shiri_ex مشاهده تاپیک
    به هر حال با توجه به اینکه قطعا خیلی زحمت کشیدید برای طراحی نرم افزار، واین صحبت من زیر سوال بردن کار شما نیست، باید توجه داشته باشید که زمانی تست های black test/white test را انجا میدید باید در بدترین شرایط ممکن بالاترین بازدهی را داشته باشید قطعا در این زمان شما می توانید به یک بازدهی ایده آل دست پیدا کنید.
    به هرحال در صورتی که تمایل داشتید کدهایی که احساس میکنید که بازدهی کمتری دارند را در اینجا قرار بدید تا در صورت لزوم بتونیم بهتر کمک تون کنیم البته ناگفته نماند که این اشکال یکی از شایع ترین اشکالات در نرم افزار های تولید شده با سی شارپ و جاوا هست.
    با تشکر از دوست عزیز.
    بنده تمام موارد تست روی سیستم خودم و سیستم های دیگه که آیتم های زیادی داره و به خصوص دستور های که زیاد کاربرد دارد رو تست گرفتم.
    یه مورد رو بگم خنده تون میگیره بنده 83 تا فیلد دارم و 19052تا رکورد دارم که میشه گفت این جامع ترین اطلاعات که هر روز به تعداد دفعات زیاد برای گزارش گیری استفاده میکنن و صد درصد بهشون اطلاعات نشان میده روی اسکیول تست گرفتم نمایش به مدت زمان 1 دقیقه روی اسکیول میکشه نمایش بده و روی سیستم بنده 56 ثانیه و روی سیستم مشتری و و همین طور کلاینت هاش 34 ثانیه میکشه بیاره و هر روز هم اطلاعات زیاد میشه ولی روی تام 34 ثانیه میکشه و یه چیز جالب تر بنده تعداد رکورد 30 درصد زدم نمایشش بده یعنی 5 هزار خوردی و هین طور 10 درصد که هزار خوردی رکورد نمایش بده روی دیتابیس که روی همون یک دقیقه بود و روی سیستم هم 34 ثانیه هستش. چون 5 تا فیلد تاریخ که تبدیل انجام میده و 15 تا جدول که ارتباط دارن ولی همه رو روی یک تایم نشان میده فکر کنم تا سال آینده هم تایم نمایشش حرکت نکنه. و از رم خیلی استفاده میکنم و وقتی وارد برنامه میشه که تو برنامه سریع تر از اسکیول سرور میاره وقتی آورد دیگه اطلاعات از دیتابیس نمیگیردم و از داخل دیتاتیبل میگیردم که سریع زیر یک ثانیه اطلاعات میاره. این هم یک مورد که رم رو پر میکنه
    آخرین ویرایش به وسیله davidrobert : چهارشنبه 01 خرداد 1398 در 12:17 عصر

تاپیک های مشابه

  1. نحوه کار با Buffer
    نوشته شده توسط AliReza Vafakhah در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: یک شنبه 12 دی 1389, 14:26 عصر
  2. چاپ یک buffer به Hex
    نوشته شده توسط ICEMAN در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: پنج شنبه 23 اسفند 1386, 15:15 عصر
  3. buffer
    نوشته شده توسط hsn_shirin در بخش توسعه‌ی هسته‌ی سیستم عامل
    پاسخ: 1
    آخرین پست: شنبه 15 دی 1386, 22:04 عصر
  4. use buffer
    نوشته شده توسط lord_viper در بخش برنامه نویسی در Delphi
    پاسخ: 1
    آخرین پست: دوشنبه 30 خرداد 1384, 08:02 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •