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