高分,内存的实时回收。
在程序中使用了一个不断的添加子窗体和不断关闭子窗体,主程序的内存消耗一直在增加,在主程序中
调用Collect,执行后也未见任何效果。
即使在任务管理器中看到该进程的内存消耗下降但总的内存消耗反而是上升的.
如果不能强制的内存回收,该程序消耗的内存将导致资源耗尽,系统崩溃。
Private Sub Main_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Collect = New PublicData.Collect
End Sub
'添加子窗体
'子窗体内只有一个AxCell1控件(用友的Cell1表格控件).
Private Sub AddF_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles AddF.Click
Sheet = New Sheet.Sheet
sheet.MdiParent = Me
sheet.Show()
End Sub
'关闭子窗体
Private Sub CloseF_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CloseF.Click
Sheet = Me.ActiveMdiChild
Sheet.Dispose()
End Sub
'强制清理内存
Public Class Collect
Dim Thread As Threading.Thread
Public Sub New()
' 开启清理线程
Thread = New Threading.Thread(AddressOf Clear)
Thread.Priority = Threading.ThreadPriority.Highest
Thread.Start()
End Sub
Private Sub Clear()
'进行垃圾清理。
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
Threading.Thread.Sleep(1000)
End Sub
Public Sub Close()
'关闭线程
Thread.Join(1)
MyBase.Finalize()
End Sub
End Class