2011-07-07 64 views
5

我正在製作一個使用計時器的C#win表單應用程序(VS2010,.NET4),我的間隔時間爲1秒,我跟蹤任務管理器,看起來我的內存使用情況(寫入的值在任務管理器的進程選項卡中的應用程序名稱前面)增加每個區間!我在計時器滴答事件中沒有做任何特殊的事情,只需增加一個整型變量並將其顯示在標籤中。計時器增加了C#應用程序中的內存使用量

這是正常的嗎?我應該關心這個記憶問題嗎?我要在我的服務器上運行這個程序(通過遠程桌面),它會給我的服務器造成什麼問題嗎?它會耗盡內存嗎? 我使用VS工具箱中的計時器。

+2

你可以發表一些關於你如何調用計時器的代碼,以及計時器在它的'ElapsedEventHandler'事件上做什麼? – Grambot

+0

您是否嘗試運行'Profiler'並查看這是否真的是問題? –

回答

6

讓我們來看看下面的例子,其更新的標籤每秒當前時間:

var timer = new Timer 
{ 
    Interval = 1000, 
}; 
timer.Tick += (s, evt) => 
{ 
    label1.Text = DateTime.Now.ToLongTimeString(); 
}; 
timer.Start(); 

如果你有這樣的代碼,你不應該擔心內存的使用。垃圾收集器可以隨時運行以釋放內存。只是你無法確定這是什麼時候發生的。

+0

+1對Darin的評論。只要你沒有做任何事情來長期記住你的記憶,你應該沒問題。如果需要,GC將清理它。在每次打勾時,您都會爲標籤文本和新事件參數創建一個新的字符串實例。這些應該在CLR需要時回收,並且不值得關注。 –

1

只是爲了調試,嘗試強制垃圾收集運行

GC.Collect(); 

你的內存使用情況應該倒回去吧約爲哪裏。順便說一句 - 您可以在調試器中通過快速查看錶達式來執行此操作。

相關問題