我在VB.NET中開發了桌面應用程序。框架是3.5和後端作爲SQL Server 2005.內存不足異常
下面是代碼[釋放內存時關閉窗體]我已經寫在主窗體,從中繼承所有窗體。
Private Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal procHandle As IntPtr, ByVal min As Int32, ByVal max As Int32) As Boolean
Private Declare Function EmptyWorkingSet Lib "psapi.dll" (ByVal hProcess As IntPtr) As Long
Private Sub frmEMR_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
GC.Collect()
GC.WaitForPendingFinalizers()
GC.RemoveMemoryPressure(GC.GetTotalMemory(True))
EmptyWorkingSet(Process.GetCurrentProcess.Handle)
SetProcessWorkingSetSize(Process.GetCurrentProcess.Handle, -1, -1)
End Sub
雖然我寫了這個堆內存有爭議的增加。
此外,未管理的內存增加。
任何人都可以幫我解決這個問題。
感謝&問候
血管沙阿
是的,你是對的,但我想寫一些概括,所以我可以寫在主表格和工作的所有繼承形式。 –
通常情況下,最好的做法是儘快處置完成。這樣你就不會發生內存不足錯誤的風險。基本上,您的應用程序正在創建所有這些實例,並使用該內存,並且在關閉表單之前內存不會被釋放。在您完成後立即處置的地方,內存可用於下一個命令。 – JRSofty