這邊使用了多個UserControl,展示界面,當業務辦完之后,想把這個UserControl占用的資源釋放,UserCOntrol沒有Close方法,所以只用了Dispose方法,但發現用了Dispose方法資源沒有恢復到之前的記憶體,請問還有什么辦法嗎?
uj5u.com熱心網友回復:
有人嗎?!!!!!!uj5u.com熱心網友回復:
控制元件 Dispose 時 .Net 不會回收資源,而是由垃圾收集器來智能處理。你可以執行 GC.Collect() 方法強制回收資源。
uj5u.com熱心網友回復:
試過了,也不行。uj5u.com熱心網友回復:
還有人嗎?????uj5u.com熱心網友回復:
沒人嗎????uj5u.com熱心網友回復:
GC.Collect() 只是通知作業系統進行垃圾收集,但是到底何時進行由作業系統來決定,我們不能確定。uj5u.com熱心網友回復:
.Net 為了提升性能,可能占用相當多的記憶體資源,當記憶體占用太多之后會自動進行垃圾收集。之所以沒有釋放資源,原因有二:1、記憶體還沒有占用到 .Net 認為需要清理的程度(如系統有8G記憶體,該程式使用了4G)
2、程式需要使用大量資源,不能釋放,否則程式邏輯會出錯(如創建了太多的物件)
uj5u.com熱心網友回復:
重新初始化控制元件。uj5u.com熱心網友回復:
是啊,我電腦有4g,之前是所有界面都放在一個List里面,用的時候show出現,但是這樣的話,界面越來越多,導致程式占用1G多了。所以打算用完一個業務的界面,就dispose,但是GC還沒回收,導致程式出現各種問題。uj5u.com熱心網友回復:
重新new了,但是之前釋放的資源并沒有回收,也不知道GC什么時候回收,導致程式記憶體越來越多。uj5u.com熱心網友回復:
自定義控制元件是否包含非托管資源,包含的話需要手動釋放掉。
uj5u.com熱心網友回復:
你指的業務辦完,是指當前UserControl,不在被參考了嗎?
如果界面還存在,那么GC怎么回收呢
uj5u.com熱心網友回復:
你指的業務辦完,
是指當前UserControl,不在被參考了嗎?
如果界面還存在,那么GC怎么回收呢
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/110454.html
標籤:C#
下一篇:有沒有遇到這種情況的大佬
