我對編寫代碼的正確方式感到有點困惑。我讀過,我不必在變量中保持引用,因爲垃圾收集不會清除它,但我不明白幾件事情。內存泄漏問題.net
這個怎麼樣代碼:
private List<String> foo; public List<String> bar() { foo = new List<String>(); foo.add(something); return foo; }
每次我打電話吧方法老富列表失去了參考,這將是對垃圾收集的候選人呢?我應該聲明(並初始化?)大部分變量在類的開始處使用,或者在聲明之前使用或聲明並初始化該方法?
2. 處置對象怎麼樣?如果如果我有使用導航事件20 WebBrowser對象我寫這篇文章的代碼
private void browser_navigating(Object sender, NavigatingEventargs e)
{
Uri someurl = new URI(something);
List<String> somelist = new List<String>();
}
,他們創造烏里和列表時,導航事件被解僱嗎?但是當我處理webBrowser時事件內部發生了什麼事?他們會失去參考?當我處置一些適用於他所有孩子的東西時,但它是否也適用於那些不實施iDisposable的對象(如Uri和List),以便他們從垃圾清除,還是留在內存中?
2.1。這些事件在註冊它的對象被丟棄後自動取消註冊?
3)我讀了靜態對象是內存泄漏的問題。 如果我需要多次使用一個類,我應該每次創建它,我需要聲明它是靜態的(例如,在我的情況下,我有一個靜態連接類,裏面有方法來登錄和與Web服務器交流,我聲明靜態(在我的mainWinform類)因爲我在它裏面存儲從登錄接收的cookie)
我會感謝你誰可以回答我的問題。