2011-05-20 35 views
2

我使用的是Windows Vista和Visual Studio 2010中創建一個Windows窗體應用程序,刪除文本框,默認窗體上的進度條,在點擊按鈕添加progressBar1.Value = 10;事件處理器。「內存泄漏」當使用Windows窗體進度條

我開始調試應用程序的內存使用量爲5400k,如任務管理器報告的那樣,並且如預期的那樣穩定。我點擊按鈕,進度條值變爲10,應用程序的內存使用量在大約4分半鐘內增長到8700k,然後保持穩定。

任何人都有解釋嗎?並不是說它看起來很關鍵或什麼,因爲它最終保持穩定,但這很奇怪,我很好奇。

我注意到,當調查使用快速移動進度條的應用程序中,無明顯原因的內存使用率高達300 MB時。

編輯:

我還在調查第二個案例。但我所說的第一個案例是一個只有一個進度條和一個按鈕的簡單表單。這裏是來源:

private void button1_Click(object sender, EventArgs e) 
{ 
    progressBar1.Value = 10; 
} 
+0

一個鏈接到我的問題其他網站被編輯和刪除?你是認真的嗎? – user755327 2011-05-20 13:03:39

+0

顯然,鮑比認爲這沒有什麼關係呢如果你不同意,只是編輯右後衛,或許促使它爲什麼值得一提的:) – sehe 2011-05-20 13:44:45

+0

@ user755327,@sehe:我必須道歉,我讀那......那不是關於它的。但對於我的辯護,我不得不說,在那個論壇上的討論似乎完全不相關,因爲他正在尋找他的編碼代碼漏洞,而不是在控制或框架中。如果您覺得我的編輯錯誤(部分原因,對不起),請隨時重新添加鏈接。 – Bobby 2011-05-20 14:16:40

回答

0

你指的是什麼內存使用情況?虛擬集意味着什麼 - 僅僅意味着堆在重複的垃圾收集運行中越來越分散。

另外,您測試的源代碼在哪裏?目前,所有我能想到的是:它必須是別的地方在你自己的代碼:)

1

.NET運行庫將保留內存,即使它不使用它的應用程序。內存似乎正在使用中,但是如果您的系統在空閒內存上開始變低,它將被釋放。

這可能是您的應用程序的情況。運行時保留內存,但不會真正使用它。

+0

僅當您更改進度欄值時,內存使用情況纔會上升。 – user755327 2011-05-20 13:08:20

1

火起來穿孔 - 週一,看看.NET內存行情 - 字節中的所有堆,字節每一代,收藏等。如果這是穩定的,你的罰款。

+0

最終穩定。但是由於進度條值的變化而在4:30分鐘內增加3300k是很奇怪的。 – user755327 2011-05-20 13:00:18

+1

@ user755327:不,它是你意想不到的。奇怪的是期待電腦做你期望的東西:)垃圾收集使內存使用不確定。堆分析是一個很好的建議 – sehe 2011-05-20 13:46:25

+0

準確地說sehe。隨着時間的推移,您將需要知道「正常」是什麼樣子,當異常發生時,您會認出它。 – n8wrl 2011-05-20 14:44:02

0

可能是在您調試時Visual Studio正在將內存而不是您的應用程序。 嘗試運行(不通過Visual Studio)IDE您在發佈模式的應用,並檢查內存

+0

我試過了。它從3400k開始,在大約4:30分鐘內仍然高達6800k。內存使用較少,因爲沒有調試,但仍然是相同的行爲。 – user755327 2011-05-20 13:10:26