نمیدونم کد پروژه تون چیه و میخواید چی کار کنید .برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید ارسالی توسط vardipoor.m برای مشاهده این لینک/عکس می بایست عضو شوید ! برای عضویت اینجا کلیک کنید
با کتابخونه ی Emgu.CV هم کار نکردم .
اما دقت کنید اشیاء هایی که متد dispose دارند و همچنین اینکه نیاز ندارید را بعد از استفاده ، dispose کنید . تا منابعی که unmanaged ئه مربوطه را از حافظه پاک بشه .
یعنی بعد از اتمام استفاده ، متدِ Dispose شون را فراخونی کنید یا از using (مثل کدی که خودتون دادید) ، برای اون اشیاء استفاده کنید .
شی های capture ، myBitmap3 ، و همچنین شیِ g و همچنین gfx ، از این دسته اشیاء هستند که باید بعد از اتمام استفاده ، dispose بشن که در کدتون ، dispose شدنِ این اشیاء ، مشخص نیست .
ضمنا ، در تایمر ، مقدار pictureBox1.Image و pictureBox2.Image را مشخص کردید . شیِ Bitmap هم جزء اشیاء dispose شدنی هست (که بسته به اندازه و کیفیت بیت مپ ، معمولا حافظه ی قابل توجهی را اشغال میکنن) .
وقتی که در تایمر مقدار بیت مپ ها را هر بار یه مقدار جدید میدید ، مقدارِ بیت مپ ای که در تایمر قبلی ، مقدار دهی شده بود را dispose نکردید . این میتونه یه دلیل مهم برای اشغال حافظه باشه .
ضمن اینکه شی و متغییرِ g که در کدتون گرفتید را اصلا استفاده نکردید! پس چه نیازی دارید؟
بجز حافظه ی Unmanaged ، هر چند مدیریت حافظه ی managed را خود gc ، بصورت اتوماتیک انجام میده (ممکنه فرضا رم تون پر بشه اما gc بعد از اینکه پر شد ، بسته به مقدار حافظه ای که سیستم عامل میخواد ، صرفا همون قدر را خالی کنه اما در صورتی که مقدار حافظه ی بیشتری از حافظه ی managed اش را لازم نداره) ، اما اگه خودتون بخواین بصورت فوری تر ، حافظه های managed ای که استفاده نشده هست (و اشاره گری بهش اشاره نمیکنه) ، از حافظه پاک بشه ، از متد GC.Collect استفاده کنید :
GC.Collect Method (System) | Microsoft Docs






پاسخ با نقل قول
Bookmarks