日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
VB.NET內(nèi)存占用解決方法介紹

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

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括諸城網(wǎng)站建設(shè)、諸城網(wǎng)站制作、諸城網(wǎng)頁(yè)制作以及諸城網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,諸城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到諸城省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

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

為了運(yùn)行下列代碼,還需要一個(gè)NotifyIcon及一個(gè)與之關(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、 啟動(dòng)時(shí)最小化并隱藏

2、 點(diǎn)擊mnuHide窗體隱藏

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

4、 最小化時(shí)窗體隱藏

一句話,其實(shí)就是編程使窗體啟動(dòng)時(shí)最小化。

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

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

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

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

事實(shí)上,使用該函數(shù)并不能提高什么性能,也不會(huì)真的節(jié)省內(nèi)存。因?yàn)樗皇菚簳r(shí)的將應(yīng)用程序占用的內(nèi)存移至虛擬內(nèi)存,一旦,應(yīng)用程序被激活或者有操作請(qǐng)求時(shí),這些內(nèi)存又會(huì)被重新占用。如果你強(qiáng)制使用該方法來(lái) 設(shè)置程序占用的內(nèi)存,那么可能在一定程度上反而會(huì)降低系統(tǒng)性能,因?yàn)橄到y(tǒng)需要頻繁的進(jìn)行內(nèi)存和硬盤間的頁(yè)面交換?!?/p>

給出我在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時(shí)用一下,效果就很好了。

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

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


當(dāng)前標(biāo)題:VB.NET內(nèi)存占用解決方法介紹
網(wǎng)站鏈接:http://m.5511xx.com/article/coeised.html