我都不敢認(rèn)你這玩意了,不知是不是要把我2GB的內(nèi)存變成1GB的,還是說把占用空間清理一些?如果是這樣的話,那也真的是有點(diǎn)可怕,萬一把正在使用的變量給清了,會(huì)不會(huì)出錯(cuò)?或者弄得程序發(fā)神經(jīng),亂搞了?

成都創(chuàng)新互聯(lián)專注于六合企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),購物商城網(wǎng)站建設(shè)。六合網(wǎng)站建設(shè)公司,為六合等地區(qū)提供建站服務(wù)。全流程專業(yè)公司,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
vb.net有垃圾回收機(jī)制,一般不用自己清理內(nèi)存,對(duì)象用完后用dispose方法釋放就行了,文件打開狀態(tài)當(dāng)然無法刪除.
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
Dim?path?As?String?=?"C:\Data.mdb"?'文件釋放路徑
Dim?resources?As?System.Resources.ResourceManager?=?My.Resources.ResourceManager
Dim?b()?As?Byte?=?resources.GetObject("Data")
Dim?s?As?IO.Stream
Try
s?=?IO.File.Create(path)
s.Write(b,?0,?b.Length)
s.Close()
MessageBox.Show("資源釋放成功")
Catch?ex?As?Exception
MessageBox.Show("資源釋放失敗!Result="?+?ex.Message)
End?Try
End?Sub
釋放內(nèi)存一般指存儲(chǔ)在內(nèi)存里的變量、數(shù)組、運(yùn)行代碼存儲(chǔ)空間的釋放。這里其實(shí)需要分2種情況。一種是數(shù)組、變量和代碼的存儲(chǔ)空間都是在程序運(yùn)行完成后由操作系統(tǒng)自動(dòng)進(jìn)行內(nèi)存的回收,也就是自動(dòng)釋放了內(nèi)存,詳細(xì)的可看看以下vb語言對(duì)變量存活期的說明。另一種是在程序過程中某些數(shù)組內(nèi)存后續(xù)過程不再使用了,而特別使用代碼將數(shù)組內(nèi)存直接釋放的情況,例如ERASE語句。
一、變量的存活期
變量保留其值的這段時(shí)間,稱為生存周期。變量的值可能在整個(gè)生存周期都在改變,但它仍然保留著一些值。當(dāng)變量失去了范圍之后,它也就不再保存著任一個(gè)值。
當(dāng)過程開始運(yùn)行時(shí),所有的變量都會(huì)被初始化。一個(gè)數(shù)值變量會(huì)初始化成
0,變長字符串被初始化成零長度的字符串 (""),而定長字符串會(huì)被填滿 ASCII 字符碼 0 所表示的字符或是 Chr(0)。Variant變量會(huì)被初始化成 Empty。用戶定義類型中每一個(gè)元素變量會(huì)被當(dāng)成個(gè)別變量來做初始化。
當(dāng)聲明一個(gè)對(duì)象變量時(shí),內(nèi)存中雖有保留空間,但它的值會(huì)被設(shè)置成
Nothing,直到利用 Set 語句對(duì)它指定一個(gè)對(duì)象引用。
如果在代碼的運(yùn)行期間,變量的值一直沒有改變,則它會(huì)繼續(xù)保有它的初始值直到它丟失范圍為止。
Dim 語句聲明過程的級(jí)別變量將保留一個(gè)值,直到此過程退出為止。如果該過程調(diào)用其它的過程,則在這些過程正在運(yùn)行的同時(shí),屬于調(diào)用者過程的變量也保留它的值。
如果過程的級(jí)別變量是用 Static 關(guān)鍵字來聲明的,則只要代碼正在任何模塊中運(yùn)行此變量仍會(huì)保留它的值。而當(dāng)所有的代碼都完成運(yùn)行后,變量會(huì)失去它的范圍和它的值。所以它的存活期和模塊級(jí)別的變量是一樣的。
模塊級(jí)別的變量與靜態(tài)變量是不同的。在標(biāo)準(zhǔn)模塊或類模塊中變量會(huì)保留它的值,直到停止運(yùn)行代碼。在對(duì)象類模塊中,只要仍有一個(gè)屬于此對(duì)象類的實(shí)例存在,則變量會(huì)一直保留它的值。模塊級(jí)別的變量會(huì)一直占用內(nèi)存資源,直到重新設(shè)置它們的值,所以只有在必要時(shí)才使用它們。
如果在 Sub 或 Function 語句前加上 Static 關(guān)鍵字,則在此過程中所有過程級(jí)別的變量的值被保留在調(diào)用期間。
二、erase語句:
set xxx=nothing就是把對(duì)象占用的空間釋放掉。 其他的局部變量都在棧內(nèi)存,用完會(huì)自動(dòng)釋放的
.net 有自己的資源回收機(jī)制GC。
如果變量不再使用了,所有引用該變量的其它變量也都沒用了(dispose或者賦值為空了),那么這些沒用的變量會(huì)定時(shí)的被GC自動(dòng)回收,不需要自己去管理。
如果非要自己釋放資源的話,可以使用 GC.Collect() 進(jìn)行釋放,但是并不能保證一次GC.Collect()就可以釋放掉所有沒有用的資源,可能要經(jīng)過好幾輪GC.Collect()才能釋放干凈。
所以還是建議不要手動(dòng)回收了,讓系統(tǒng)根據(jù)要求自動(dòng)回收吧。
本文名稱:包含vbnet釋放內(nèi)存的詞條
本文URL:http://www.chinadenli.net/article18/hipggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、虛擬主機(jī)、商城網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站建設(shè)、移動(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í)需注明來源: 創(chuàng)新互聯(lián)