PDA

View Full Version : پر شدن رم



minazolfaghari
سه شنبه 19 مرداد 1389, 11:05 صبح
با سلام
من یک برنامه دارم که با استفاده از یک webbrowser که اطلاعات یک صفحه از یک سایت را می خواند و از اون صفحه تنها یک جدول که شامل user های آنلاین هست را در یک دیتا گرید نمایش می دهد و براساس اطلاعات دیتاگرید برای هر user وضعیت و زمان کارکرد آن را از دیتابیس خوانده و در دیتاگ رید نمایش میدهدو چنان چه کاربر از حد مجاز خود خارج شده بود آن را disconnect میکند و هر 10 ثانیه یک بار رفرشی روی webbrower انجام داده واطلاعات را دوباره واکشی میکند.و این برنامه همیشه در حالت run است.
ولی رم زیادب برنامه می گرفت من منابعی که هربار اطلاعات آن رفرش می شود را clear و disposeمیکنم و هر 10 ثانیه یک بار رم سیستم را با تابع زیر پاک میکنم.
Public Sub FlushMemory()
Try
GC.Collect()
GC.WaitForPendingFinalizers()
If (Environment.OSVersion.Platform = PlatformID.Win32NT) Then
SetProcessWorkingSetSize(Process.GetCurrentProcess ().Handle, -1, -1)
Dim myProcesses As Process() = Process.GetProcessesByName("ApplicationName")
Dim myProcess As Process
'Dim ProcessInfo As Process
For Each myProcess In myProcesses
SetProcessWorkingSetSize(myProcess.Handle, -1, -1)
Next myProcess
End If
Catch ex As Exception
End Try
End Sub



و وضعیت برنامه را که در taskmanager>pocess می بینم حدود 30m رم می گیرد ولی در taskmanager>performance در قسمت pf usage رم زیادی می گیره به طوری که برنامه پس از چند ساعت run بودن هنگ می کند و مجبور به reset کردن سیستم می شویم
خواهشمند است اگر کسی راه حلی و یا نمونه برنامه ای شبیه این دارد مرا راهنمایی کند
با تشکر