自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

VB.NET內(nèi)存占用解決方法介紹

開發(fā) 后端
通過不斷的實踐,積累下來的經(jīng)驗告訴我們,VB.NET內(nèi)存占用這一問題可以用兩種方法來解決。那么在這里將會對這兩種方法進行一個詳細的介紹。

VB.NET為我們帶來了許多新的應(yīng)用方式和代碼編寫方式,在一定程度上大大提高了編程人員的編程效率。而且其應(yīng)用方式多樣化,靈活性等特點大大吸引著開發(fā)人員。我們今天將會為大家介紹VB.NET內(nèi)存占用的相關(guān)解決方法,幫助大家解決一些實際開發(fā)中的問題。

VB.NET內(nèi)存占用方法一:將窗體隱藏或者最小化啟動(這個方面是大家根據(jù)經(jīng)驗得出來的)

下列VB.NET 2005代碼片斷通過窗體變量m_IsHide來控制是否將窗體最小化并隱藏,初始化為True。

為了運行下列代碼,還需要一個NotifyIcon及一個與之關(guān)聯(lián)的ContextMenuStrip,后者包含mnuShow和mnuHide菜單兩枚。

 

 

  1. Private m_IsHide As Boolean = True 
  2. Private Sub frmMain_Activated() Sub 
    frmMain_Activated(ByVal sender As 
    Object, ByVal e As System.EventArgs) 
    Handles Me.Activated  
  3. If m_IsHide Then  
  4. Me.WindowState = FormWindowState.
    Minimized  
  5. Me.Hide()  
  6. Else  
  7. Me.WindowState = FormWindowState.
    Normal  
  8. Me.Show()  
  9. End If  
  10. End Sub  
  11. Private Sub frmMain_Resize() Sub 
    frmMain_Resize(ByVal sender As Object, 
    ByVal e As System.EventArgs) 
    Handles Me.Resize  
  12. If Me.WindowState = FormWindowState.
    Minimized Then  
  13. m_IsHide = True 
  14. Me.Hide()  
  15. End If  
  16. End Sub  
  17. Private Sub mnuShow_Click() Sub 
    mnuShow_Click(ByVal sender As 
    System.Object, ByVal e As System.
    EventArgs) Handles mnuShow.Click  
  18. m_IsHide = False 
  19. Me.WindowState = FormWindowState.Normal  
  20. Me.Show()  
  21. End Sub  
  22. Private Sub mnuHide_Click() Sub 
    mnuHide_Click(ByVal sender As System.
    Object, ByVal e As System.EventArgs) 
    Handles mnuHide.Click  
  23. m_IsHide = True 
  24. Me.WindowState = FormWindowState.Minimized  
  25. Me.Hide()  
  26. End Sub 

上述代碼的功能是:#t#

1、 啟動時最小化并隱藏

2、 點擊mnuHide窗體隱藏

3、 點擊mnuShow窗體恢復(fù)

4、 最小化時窗體隱藏

一句話,其實就是編程使窗體啟動時最小化。

VB.NET內(nèi)存占用方法二:Windows將程序占用的內(nèi)存倒入虛擬內(nèi)存可以造成小內(nèi)存占用的假象。

樂天居上有篇文章“將物理內(nèi)存的占用挪到虛擬內(nèi)存里-----揭密篇 ”對此有完整的介紹:“而是操作系統(tǒng)本身就有這個機制,即當程序不使用時(最小化),操作系統(tǒng)會調(diào)用某些命令,來將該程序占用的內(nèi)存移至虛擬內(nèi)存,只保留一小部分常規(guī)代碼”

 

  1. BOOL SetProcessWorkingSetSize(  
  2. HANDLE hProcess,  
  3. SIZE_T dwMinimumWorkingSetSize,  
  4. SIZE_T dwMaximumWorkingSetSize  
  5. ); 

 

“將 2個 SIZE_T 參數(shù)設(shè)置為 -1 ,即可以使進程使用的內(nèi)存交換到虛擬內(nèi)存,只保留一小部分代碼。

事實上,使用該函數(shù)并不能提高什么性能,也不會真的節(jié)省內(nèi)存。因為他只是暫時的將應(yīng)用程序占用的內(nèi)存移至虛擬內(nèi)存,一旦,應(yīng)用程序被激活或者有操作請求時,這些內(nèi)存又會被重新占用。如果你強制使用該方法來 設(shè)置程序占用的內(nèi)存,那么可能在一定程度上反而會降低系統(tǒng)性能,因為系統(tǒng)需要頻繁的進行內(nèi)存和硬盤間的頁面交換。”

給出我在vb2005中的使用范例:

 

  1. Imports System.Runtime.InteropServices  
  2. Module modMain Module modMain  
  3. < DllImport("kernel32.dll")> _  
  4. Public Function SetProcessWorkingSetSize() 
    Function SetProcessWorkingSetSize( _  
  5. ByVal hProcess As Integer, _  
  6. ByVal dwMinimumWorkingSetSize As Integer, _  
  7. ByVal dwMaximumWorkingSetSize As Integer) _  
  8. As Integer  
  9. End Function  
  10. < DllImport("kernel32.dll")> _  
  11. Public Function GetCurrentProcess() 
    Function GetCurrentProcess() As Integer  
  12. End Function  
  13. Public Sub ReduceMem() Sub ReduceMem()  
  14. SetProcessWorkingSetSize(GetCurrentProcess, -1, -1)  
  15. End Sub  
  16. End Module  

使用ReduceMem()函數(shù)的效果很贊,但是不建議經(jīng)常用,我只是在FormLoad時用一下,效果就很好了。

值得一提的是,如果不使用GetCurrentProcess()函數(shù)得到當前Process,而是使用Process.GetCurrentProcess(),則無法有效縮減使用內(nèi)存。

以上就是我們?yōu)榇蠹規(guī)淼腣B.NET內(nèi)存占用的具體解決方案。

責任編輯:曹凱 來源: wewill.cn
相關(guān)推薦

2010-01-18 17:15:20

VB.NET參數(shù)類型不

2010-01-07 15:25:11

VB.NET數(shù)組

2009-10-29 10:04:57

VB.NET Read

2009-11-10 12:42:47

VB.NET Prin

2010-01-22 10:41:33

VB.NET聲明結(jié)構(gòu)

2010-01-21 17:58:40

VB.NET List

2010-01-15 19:17:23

2010-01-15 18:12:28

VB.NET超鏈接

2010-01-08 13:35:35

VB.NET寫Log方

2009-10-28 09:55:29

VB.NET MyCl

2010-01-07 16:51:56

VB.NET窗體鉤子

2010-01-20 17:47:54

VB.NET注釋

2010-01-18 14:35:11

VB.NET讀取內(nèi)存

2010-01-08 14:22:00

VB.NET精度問題

2010-01-15 10:56:50

VB.NET繼承實現(xiàn)多

2010-01-07 18:17:00

VB.NET連接SAP

2010-01-12 09:37:48

VB.NET調(diào)用IE

2010-01-21 13:34:56

VB.NET刪除文件夾

2010-01-12 10:40:58

VB.NET數(shù)據(jù)庫壓縮

2010-01-14 18:22:05

VB.NET硬盤速度測
點贊
收藏

51CTO技術(shù)棧公眾號