.NET程式的記憶體用量一直以來都是程式設計師所關注的焦點。因為.NET程式必需載入.NET Framework的關係,記憶體用量動輒就至少10MB以上。






對於觀察敏銳的人來說,相信應該都有注意到某個奇特的現象,那就是當我們把程式視窗縮小至工具列時,記憶體就會驟減。





因為作業系統會把虛擬內存轉為物理內存的關係。大多數觀察到這現象的人都會利用把應用程式縮小來壓縮程式的記憶體用量。但這樣做起來有點笨拙,站在使用者的觀點來看也是怪怪的,甚至會造成使用者使用上的不便。
其實同樣的效果,我們也可以透過SetProcessWorkingSetSize API來達到。

API宣告方式
VB.NET
Private Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll" _
(ByVal procHandle As IntPtr, ByVal min As Int32, ByVal max As Int32) As Boolean
範例程式碼
Public Class Form1

#Region "Declare"
Private Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal procHandle As IntPtr, ByVal min As Int32, ByVal max As Int32) As Boolean
#End Region


#Region "Private Method"
Private Sub CompressMemory()
SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1)
End Sub
#End Region


#Region "Event Process"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
CompressMemory()
End Sub
#End Region
End Class
arrow
arrow
    全站熱搜

    colud77 發表在 痞客邦 留言(1) 人氣()