امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
آزاد کردن RAM بعد از بستن فرم
نویسنده پیام
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #1
آزاد کردن RAM بعد از بستن فرم
سلام.
من وقتی یه فرم رو میبندم حافظه اشغال شده داخل RAM آزاد نمیشه. چطور باید یه فرم نه کل برنامه رو ببندم تا رم اشغال شده کاملا آزاد شه؟
۰۵-دى-۱۳۸۶, ۱۳:۲۱:۱۱
ارسال‌ها
پاسخ
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #2
RE: آزاد کردن RAM بعد از بستن فرم
کی میگه ازاد نمیکنه پس گاربیج کالکتور کارش چیه
وقتی scope یه متغیر تموم میشه یا dispose یه کلاس صدا میشه
گاربیج کالکتور میاد اشغال های تو ram نو رو جمع میکنه میره
علاوه بر اون میشه اینجوری هم صداش کرد
system.gc.collect()

هر چی روش خوبه توش خوب نیست!
۰۶-دى-۱۳۸۶, ۱۲:۳۵:۲۸
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #3
RE: آزاد کردن RAM بعد از بستن فرم
سلام.
نه نمیشه. من برای تست یه آرایه long به طول 10000000 تعریف کردم که رم اشغالی رو 100 مگ افزایش میداد. ولی بعد از بسته شدن فرم باز هم این 100 مگ اشغال میمونه. تا این که کل برنامه رو ببندم.
۰۶-دى-۱۳۸۶, ۲۱:۴۰:۰۸
ارسال‌ها
پاسخ
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #4
RE: آزاد کردن RAM بعد از بستن فرم
گفتم که مدیریت حافظه رو خود C# انجام میده و طی بازه های زمانی خاصی اشغال های تو ram رو میاد جمع میکنه میره یکی از اون زمانها کم آوردن ram میباشد . دقیق اومدن گاربیج کالکتورو میتونی از microsoft بپرسی
ولی مثلا با استفاده از using اینجور چیز ها تقریبا میشه کنترلش کرد .
مثلا using (sqlconnection connection=new sqlconnection)
{
}
که با این کار بسته شدن connection و آزاد سازی منابع سیستم تضمین میشه .

هر چی روش خوبه توش خوب نیست!
۰۸-دى-۱۳۸۶, ۲۱:۲۹:۵۶
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #5
RE: آزاد کردن RAM بعد از بستن فرم
سلام.
خوب همین دیگه. من نمیتونم صبر کنم تا رم کم بیاد. من باید همه منابع رو به محض بستن آزاد کنم.
۰۹-دى-۱۳۸۶, ۱۳:۳۴:۵۸
ارسال‌ها
پاسخ
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #6
RE: آزاد کردن RAM بعد از بستن فرم
system.gc.collect رو یه تست بزن

هر چی روش خوبه توش خوب نیست!
۱۰-دى-۱۳۸۶, ۱۰:۳۲:۰۷
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #7
RE: آزاد کردن RAM بعد از بستن فرم
سلام.
اونم تست کرده بودم. جواب نداد.
۱۰-دى-۱۳۸۶, ۱۹:۵۱:۰۶
ارسال‌ها
پاسخ
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #8
RE: آزاد کردن RAM بعد از بستن فرم
برنامتو به صورت unsafe بنویس ببین جواب میگیری .

هر چی روش خوبه توش خوب نیست!
۱۱-دى-۱۳۸۶, ۱۰:۰۱:۱۳
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #9
RE: آزاد کردن RAM بعد از بستن فرم
سلام.
بیشتر توضیح بده.
۱۱-دى-۱۳۸۶, ۱۳:۵۴:۵۴
ارسال‌ها
پاسخ
esmaeily-hosein آفلاین
كاربر دو ستاره
**

ارسال‌ها: 232
موضوع‌ها: 12
تاریخ عضویت: دى ۱۳۸۴

تشکرها : 6
( 91 تشکر در 46 ارسال )
ارسال: #10
RE: آزاد کردن RAM بعد از بستن فرم
منکه تست کردم آزاد کردم . شاید ramet خرابه !

کد:
class Program
{
public const int MaxNumber = 1000000;

static private void Main(string[] args)
{
Test();
GC.Collect();
Console.ReadLine();
}

static private void Test()
{
int[] array = new int[Program.MaxNumber];
for (int i = 0; i < array.Length; i++)
array[i] = i;
array = null;
}
}

هر چی روش خوبه توش خوب نیست!
۱۰-فروردین-۱۳۸۸, ۰۰:۵۹:۵۹
ارسال‌ها
پاسخ
Payman62 آفلاین
مدیر بخش ویژوال بیسیک
*****

ارسال‌ها: 2,273
موضوع‌ها: 149
تاریخ عضویت: اسفند ۱۳۸۴

تشکرها : 1308
( 3661 تشکر در 942 ارسال )
ارسال: #11
RE: آزاد کردن RAM بعد از بستن فرم
سلام.
لابد انتظار داری من بیام بگم پس چرا رو سیستم من جواب نمیده؟
سوالی که تو سال 86 مطرح شده رو تو سال 88 جواب میدی. چه خونسردم بحث رو ادامه میده.
ممنون از کمکت. یادم نیست این مشکل رو چطور حل کردم. ولی اون موقع یه بلایی سر برنامه اوردم.
۱۰-فروردین-۱۳۸۸, ۰۴:۱۴:۳۲
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  بستن برنامه ساخته شده با #c taksa2012 1 3,072 ۰۵-آبان-۱۳۹۲, ۱۴:۳۰:۴۳
آخرین ارسال: Ghoghnus
  بستن فرم لاگين iran58 1 2,629 ۱۸-تير-۱۳۸۹, ۲۲:۵۳:۲۹
آخرین ارسال: HENAS
  بستن فرم ها iran58 6 8,616 ۱۷-تير-۱۳۸۹, ۱۲:۴۳:۲۸
آخرین ارسال: salehjg
  بستن یک فرم بوسیله فرم دیگر iran58 1 6,643 ۱۷-تير-۱۳۸۹, ۱۲:۳۲:۵۸
آخرین ارسال: HENAS
  بستن فرم iran58 6 5,651 ۱۷-تير-۱۳۸۹, ۱۲:۲۴:۳۸
آخرین ارسال: HENAS

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS