vb.net有垃圾回收機(jī)制,一般不用自己清理內(nèi)存,對(duì)象用完后用dispose方法釋放就行了,文件打開(kāi)狀態(tài)當(dāng)然無(wú)法刪除.
成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(成都創(chuàng)新互聯(lián)公司).為客戶提供專業(yè)的簡(jiǎn)陽(yáng)服務(wù)器托管,四川各地服務(wù)器托管,簡(jiǎn)陽(yáng)服務(wù)器托管、多線服務(wù)器托管.托管咨詢專線:18982081108
我都不敢認(rèn)你這玩意了,不知是不是要把我2GB的內(nèi)存變成1GB的,還是說(shuō)把占用空間清理一些?如果是這樣的話,那也真的是有點(diǎn)可怕,萬(wàn)一把正在使用的變量給清了,會(huì)不會(huì)出錯(cuò)?或者弄得程序發(fā)神經(jīng),亂搞了?
set xxx=nothing就是把對(duì)象占用的空間釋放掉。 其他的局部變量都在棧內(nèi)存,用完會(huì)自動(dòng)釋放的
可以將文件等分成兩部分,分別用兩個(gè)private讀取就是2線程。
內(nèi)存解決方案:不要等程序自動(dòng)GC,自己手動(dòng)釋放不需要內(nèi)存。
缺陷:可能會(huì)浪費(fèi)時(shí)間。
分類: 電腦/網(wǎng)絡(luò) 程序設(shè)計(jì) 其他編程語(yǔ)言
問(wèn)題描述:
別跟我說(shuō)VB2000自動(dòng)釋放內(nèi)存,曾經(jīng)深信這句話的我,如今已是傷痕累累,好幾個(gè)大項(xiàng)目都差點(diǎn)毀在vb的內(nèi)存問(wèn)題上,C#我倒不知道..VB的回收內(nèi)存速度太慢了,這只是保守的說(shuō),其實(shí)本人認(rèn)為它根本不會(huì)回收內(nèi)存.就算全部用上gc.collet也回收不了,而且越用越慢
在使用我的項(xiàng)目的時(shí)候,隨著窗口的開(kāi)開(kāi)關(guān)關(guān)\控件的調(diào)用,內(nèi)存一直飆,從14MB左右一路瘋狂飆高,40分鐘系統(tǒng)就崩潰了...上了補(bǔ)丁的XP可以不死機(jī),但就定著不動(dòng)了..如果虛擬內(nèi)存文件大,可以維持到撐滿,但錄一條記錄平均要等一個(gè)小時(shí)!!!!!!!,后來(lái)我學(xué)乖了開(kāi)始nothing全局變量(工作量驚人...),結(jié)果內(nèi)存開(kāi)始有下走的現(xiàn)象(原來(lái)是一路向上..只占不放)但內(nèi)存還是呈曲線上飆,40分鐘到200多MB,于是我開(kāi)始釋放局部變量,在每個(gè)方法中都要釋放!!!!!!!!!!!!!!!!!!!!!,而且還要區(qū)分哪些是引用!痛苦啊!!!
...結(jié)果三個(gè)月之后,滿面憔悴的我終于發(fā)現(xiàn)內(nèi)存接近正常了,雖然還不是釋放的很干凈,但能保證在一段時(shí)間內(nèi)不會(huì)崩潰了..至少客戶做的時(shí)候沒(méi)再提過(guò)意見(jiàn)...我并沒(méi)有優(yōu)化什么代碼,只是痛苦的釋放了一些全局和局部變量,結(jié)果內(nèi)存就不消耗的那么厲害了,你說(shuō)奇怪不奇怪..但內(nèi)存始終不是釋放的那么干凈,我算過(guò)了一分鐘內(nèi)曲線飆高2MB左右,有時(shí)更多照這樣一來(lái),真是早死不如晚死,想想將來(lái)還不如用java重新做呢...各位可憐可憐我吧,有什么好主意整理vb2000的內(nèi)存的好東東,就告訴我吧!!!!!!!!!!我真的受不了了!!!!!有沒(méi)有什么方法可以重新分配內(nèi)存呢,就算會(huì)造成頁(yè)中斷我也在所不惜!!!!
另外Me.Refresh()是什么意義,能釋放內(nèi)存么?
解析:
很簡(jiǎn)單,你沒(méi)有正確理解VB的內(nèi)存自動(dòng)回收機(jī)制,仔細(xì)看一下MSDN,好好研究一下相關(guān)的內(nèi)容。其實(shí)JAVA的內(nèi)存自動(dòng)回收機(jī)制與VB是類似的,如果你用VB.NET做不好,換用JAVA照樣做不好。
其實(shí),你已經(jīng)發(fā)現(xiàn)了為什么內(nèi)存不能回收,只是你沒(méi)意識(shí)到罷了。
為什么要用全局變量呢?給你舉個(gè)極端的例子吧:建立一個(gè)全局的Hashtable,然后將程序中創(chuàng)建的每一個(gè)對(duì)象實(shí)例加入到這個(gè)hashtable中,那么你將看到內(nèi)存一直猛增,直到崩潰。
正確的作法是:
1、盡量不用、少用全局變量和靜態(tài)變量
2、如果沒(méi)有必要,就不要把對(duì)象實(shí)例加到全局或靜態(tài)的Hashtable、ArrayList之類的 *** 中去,除非你是想自己建立一個(gè)對(duì)象緩沖池
3、如果你自己要建立對(duì)象緩沖池,就一定要注意對(duì)象的清理,盡早將不用的對(duì)象從池中刪除
4、找本好一點(diǎn)的數(shù)據(jù)結(jié)構(gòu),仔細(xì)學(xué)學(xué)其中關(guān)于自動(dòng)內(nèi)存回收的那幾種機(jī)制,以后在程序中不要違反它們的要求前提條件。
.net 有自己的資源回收機(jī)制GC。
如果變量不再使用了,所有引用該變量的其它變量也都沒(méi)用了(dispose或者賦值為空了),那么這些沒(méi)用的變量會(huì)定時(shí)的被GC自動(dòng)回收,不需要自己去管理。
如果非要自己釋放資源的話,可以使用 GC.Collect() 進(jìn)行釋放,但是并不能保證一次GC.Collect()就可以釋放掉所有沒(méi)有用的資源,可能要經(jīng)過(guò)好幾輪GC.Collect()才能釋放干凈。
所以還是建議不要手動(dòng)回收了,讓系統(tǒng)根據(jù)要求自動(dòng)回收吧。
分享標(biāo)題:vb.net釋放內(nèi)存的簡(jiǎn)單介紹
分享路徑:http://chinadenli.net/article26/hgedjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、商城網(wǎng)站、ChatGPT、網(wǎng)站設(shè)計(jì)、云服務(wù)器、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)