VB.NET程序如何巧妙释放内存
2008-01-08 22:27 這樣寫就可以讓內(nèi)存占有變得比較小(親自測(cè)試過(guò)可用) Private Sub frmMain_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ShownMe.WindowState = System.Windows.Forms.FormWindowState.MinimizedMe.WindowState = System.Windows.Forms.FormWindowState.NormalEnd Sub
參考文章: http://hi.baidu.com/taikyo/blog/item/07984030ae94e897a8018e3b.html
| 眾所周知,VB程序效率低下,但是開(kāi)發(fā)難度相對(duì)較低。這次我們接下了昆明市少兒圖書館IC卡會(huì)員管理系統(tǒng)。由于用戶時(shí)間要求高。我權(quán)衡再三,決定讓大家采用VB.NET開(kāi)發(fā)。這個(gè)項(xiàng)目確實(shí)給我們帶來(lái)了挑戰(zhàn)。對(duì).NET的底層調(diào)用能力一直懷疑。但是在反復(fù)及大量的試驗(yàn)后,基本實(shí)現(xiàn)了跨平臺(tái)跨語(yǔ)言。增加了很多信心。 ?? 第一期已經(jīng)驗(yàn)收了。前天又開(kāi)始一輪測(cè)試。測(cè)試中,卻發(fā)現(xiàn)了致命的問(wèn)題。內(nèi)存占用過(guò)大。先前我忽略這個(gè)問(wèn)題的原因是.NET的垃圾回收機(jī)制,我還以為,垃圾問(wèn)題是我們不用考慮的。但是今天看著任務(wù)管理器,我傻了。 但是還是得想辦法的。開(kāi)始網(wǎng)上展開(kāi)天羅地網(wǎng)式搜索。結(jié)果好像答案還是很多的。 1.窗口.dipose() 該方法,應(yīng)該是是釋放內(nèi)存中,不用的窗體資源。貌似有用的,但是仔細(xì)觀 察,內(nèi)存沒(méi)發(fā)生改變,這是其次,關(guān)鍵是,這個(gè)窗口還會(huì)在你不想他出來(lái)的時(shí)候出來(lái)。后來(lái),試驗(yàn)了發(fā)現(xiàn)。加上 set 窗體=nothing 這下,好像徹底了很多。重新調(diào)用這個(gè)窗體,必然要重新Load,這樣一來(lái),看來(lái)是處理。可是,看內(nèi)存呢?還是不變! 2.后來(lái)網(wǎng)上重新提出窗體.finalize() 方法。說(shuō)是窗口.dipose(),窗口.close()和該方法一起使用。但是沒(méi)看出什么明顯作用。 3.看來(lái)是要使用gc了?強(qiáng)行進(jìn)行垃圾回收。一試,我靠,還是不起作用。 ?? 就在臨近絕望的時(shí)候,同學(xué)一個(gè)偶然的操作(因?yàn)闇y(cè)試很郁悶,無(wú)意中將窗口最小化了)這時(shí),任務(wù)管理器突然變了,程序占用內(nèi)存突然減小數(shù)倍。欣喜。改變代碼,在finalize(),set 窗體=Nothing后加上了自動(dòng)最小化,之后最大化。看起來(lái)一晃而過(guò),但是,內(nèi)存垃圾全不見(jiàn)了,呵呵。成功! 希望這個(gè)經(jīng)驗(yàn)可以幫助一些朋友。關(guān)于原理,現(xiàn)在還不是很清楚。但是我會(huì)努力找到答案。 |
總結(jié)
以上是生活随笔為你收集整理的VB.NET程序如何巧妙释放内存的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序最小化后释放了很多的内存的原因
- 下一篇: php根据IP获取所有地,腾讯IP AP