PDA

View Full Version : آموزش:کم کردن حجم برنامه در رم و آزاد کردن رم



shahrdar
پنج شنبه 12 شهریور 1388, 16:13 عصر
با اين کلاس ميتونين کنترل ها و يا فرم يا ... که در رم موندن رو از حافظه خالی کنين


Public Class Mem
' Methods
Public Shared Sub FlushMemory()
GC.Collect()
GC.WaitForPendingFinalizers()
If (Environment.OSVersion.Platform = PlatformID.Win32NT) Then
Mem.SetProcessWorkingSetSize(Process.GetCurrentPro cess.Handle, &H1E8480, &H1E8480)
End If
End Sub

<DllImport("kernel32.dll")> _
Private Shared Function SetProcessWorkingSetSize(ByVal process As IntPtr, ByVal minimumWorkingSetSize As Integer, ByVal maximumWorkingSetSize As Integer) As Integer
End Function

End Class

mohammadi4net
یک شنبه 22 شهریور 1388, 01:10 صبح
من یک برنامه رو که فرم اصلی حدودا 22 مگ اجرا می شه بعد با باز و بسته کردن چند فرم و انجام کارهام حجمش به 42 مگ می رسه که اگه دستور GC.Collect اجرا کنم به 30 مگ می رسه ولی با کد بالا به 5 مگ رسید.
کدی که نوشته خیلی عالی بود ولی یکم در موردش توضیح بدین.
قسمت اولش رو هر کسی که در مورد زباله روب دات نت تحقیق کرده باشه می شناسه ، خوبه ولی چنگ به دل نمی زنه.
GC.Collect()
GC.WaitForPendingFinalizers()
ولی تابعی که از کتابخانه kernel32 استفاده می کنه یک کاری شبیه معجزه انجام می ده ولی این که چکار می کنه که حجم برنامه رو زیر 5 مگ می بره باید توضیح بدین شاید معایبی داره که ما از اون بی خبریم !

majid325
یک شنبه 27 دی 1388, 23:58 عصر
http://msdn.microsoft.com/en-us/library/ms686234(VS.85).aspx