View Full Version : سوال: مشکل با حجم در حافظه و dispose
shahrdar
پنج شنبه 28 آذر 1387, 17:38 عصر
سلام به همه
2 تا فرم دارم. فرم اول رو که باز ميکنم 7 mb از رم رو اشغال ميکنه فرم 2 رو که باز ميکنم 130 mb رو اشغال ميکنه
حالا با فرمان های
Close يا dispose
فرم 2 بسته ميشه ولی هنوز 130 تا از رم اشغاله
کسی راه حلی داره؟
mostafaaa
پنج شنبه 28 آذر 1387, 18:06 عصر
سلام دوست من
در مورد کلاس GC جستجو کن حتما به جواب میرسی.
البته اگه انگلیسیت خوب باشه توضیحات MSDN برات کفایت میکنه.
فقط یه توضیح کوچیک اینکه : وظیفه این کلاس اینه که فضاهای توی رم رو که استفاده نمیشه خالی بکنه در واقع میتونیم بگیم یه جورایی یه زباله روب برای memory سیستم محصوب میشه.
shahrdar
پنج شنبه 28 آذر 1387, 18:17 عصر
متاستفانه اين کلمه خيلی کوتاهه دنباله GC class هم که ميگردم گير نمياد شما نميدونی GC مخفف چه کلمه اييه؟
shahrdar
پنج شنبه 28 آذر 1387, 18:23 عصر
اسمه کاملشو گير اوردم garbage collector
خودشم گير ميآرام برای همه ميزارم اينجا
shahrdar
پنج شنبه 28 آذر 1387, 19:00 عصر
دوسته عزيز ميتونی يه کمکی کنی
من برای object يا کلاس ها پيدا کردم ولی نميدونم چجوری برای فرم استفادش کنم
mostafaaa
پنج شنبه 28 آذر 1387, 21:42 عصر
سلام دوست من
بزار یه مثال خیلی ساده از استفاده از این کلاس برات بزنم.
فرض کن یک کلاس به شکل زیر داریم:
Public Class Sample
Dim L As List(Of Integer)
Public Sub DoWork()
L = New List(Of Integer)
For i As Integer = 0 To 10000000
L.Add(i)
Next
End Sub
End Classبا فراخوانی متد DoWork یک چیزی حدود 70MB از فضای Memory سیستم اشغال میشه.
Dim MySample As New Sample
Private Sub btnDowork_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDowork.Click
MySample.DoWork()
End Subاگه بخوای به این شکل این کلاس رو از بین ببری ، اون مقدار 70MB بهت برنمیگرده.
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
MySample = Nothing
End Subیا حتی اگه کلاس قابل Dispose کردن هم بود باز هم همین نتیجه رو میداد.
ولی اگه به این شکل کلاس رو از بین ببری جریان فرق میکنه.
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
MySample = Nothing
GC.Collect()
End Subامیدوارم به دردت خورده باشه
البته شاید راههای بهتری هم برای حل کردن این مشکل باشه !!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.