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