
نوشته شده توسط
_H2_
در مورد خطا مد نظرتان مطلب دقیقی نمیتوانم بیان کنم، فقط میتوانم یک سری پیشنهاد کلی برایتان مطرح کنم:
- شما میتوانید با TaskManager و PerformanceMonitor برنامه ها را زیر نظر بگیرید و ببینید دقیقاً چه exe ای مصرف نا متعارفی دارد و مدام حافظه بیشتری مصرف میکند.
- این خطا میتوانید بعلت بی دقتی در کدنویسی خود برنامه هم باشد (نشت حافظه)، شما باید تلاش کنید که تا حدامکان اشیایی را که قابلیت IDisposable در اولین فرصت ممکن نابود کنید.
(مثلاً اگر مدام یک DataSet یا Bitmap و... تولید و جای قبلی می ریزید، سعی کنید مقدار قبلی را Dispose کنید)
- در تعریف اشیا فوق مثل (Connection و DataSet و Bitmap و...) تا حد امکان از دستورات Using یا Dispose در انتهای مصرف استفاده کنید.
- قبل از انجام اعمال سنگین بارگذاری در RAM (مثل پرکردن یک DataSet بزرگ) از دستور GC.Collect استفاده کنید.
- برنامه را طوری اصلاح کنید که نیاز نباشد کل یک جدول را در خروجی آن نمایش دهید.
مثلاً SELECT * FROM tablename دستور جالبی برای اجرا در یک برنامه صنعتی نیست!
(بعنوان نمونه ما در برنامه خودمان کامل سیستم صفحه بندی را داریم و هیچ زمان یک گراید کل یک جدول را بارگذاری و نمایش نمیدهد)
- در چاپ های سنگین هم میتوانید تنظیمات را یکبار از کاربر دریافت کنید (مثل چاپگر و کاغذ و...) و سپس خودتان با کدنویسی اطلاعات را در قالب 100 صفحه ، 100 صفحه درخواست داده و به برنامه گذارش ساز بدهید و دستور چاپ بدهید و سپس 100 صفحه بعدی و...
(طبیعتاً کار خوب زحمت دارد و کدنویسی بیشتر و دقیق تری میخواهد !)
- کلاً به هر طریقی که ارتباط سنگین با دیتابیس دارید، داشتن تفکر صفحه بندی و جریان گرایی (Stream) بهتر است ولی متاسفانه اغلب ابزار آماده به علت سادگی استفاده روی بارگذاری کل اطلاعات در RAM تاکید دارند و مانور میدهند و این در حالی است که RAM ها همواره کمتر از ظرفیت تجهیزات Harddisk ذخیره سازی دیتابیس ها هستند.
- در طراحی اولیه جداول و انتخاب PrimaryKey ها دقت کنید و در انتخاب یا عدم انتخاب ستون هایی برای کاندید Index شدن دقت کنید.
- برخی موارد این خطاها میتواند از مشکلات داخلی خود ابزار تولیدی مایکروسافت هم باشد.
گرچه به تجربه من بیشتر موارد مقصر خود نحوه کدنویسی است.
دقت کنید برنامه خارج محیط VS هم خطا میدهد یا نه.
و در نهایت مایکروسافت مدام پک های بروزرسانی برای Win,SqlServer,VS,Framework و... ارائه میدهد...
تلاش کنید سیستم تان را بروز نگاه دارید.
- هرچقدر هم RAM و منابع آزاد زیاد داشته باشید، بازهم مصرف زیاد این منابع را بی اثر می کند.
در اغلب رایانه های دوستان که دقت میکنم، تعداد بسیار زیادی برنامه کاملاً بی فایده در Startup دارند.
برنامه کمکی msconfig را اجرا ترجیحاً کلیه موارد فهرست Startup غیر فعال کنید، مطمئن باشید با غیر فعال کردن همه انها هم باز رایانه تان به خوبی کار میکنید.
نترسید! باور کنید! یکبار تیک همه را بردارید و رایانه را ریست کنید اگر چیزی درست کار نکرد، میتوانید مجدد تیکش را بگذارید.
(تازه این لیست فقط بخش کوچکی از اجرای بیمصرفی است که همراه سیستم عامل تان شروع میشود!)
- ضرری ندارد سیستم تان را با یک ضدویروس بروز رسانی شده هم اسکن کنید...!
و...