我有一個WinForm應用程序,它定期輪詢TCP服務器並下載一些用戶數據(JSON表示法)。出於某種原因,與下面的方法每次調用該應用程序增加內存使用情況:WebClient.DownloadString()的內存泄漏/分配問題?
private void timerElapsed(object sender, ElapsedEventArgs e)
{
if (!isPolling)
{
isPolling = true;
try
{
using (System.Net.WebClient wc = new System.Net.WebClient())
{
jsonTemp = wc.DownloadString(serverUrl);
isPolling = false;
}
}
catch (Exception ex)
{
isPolling = false;
}
}
else
{
isPolling = false;
}
}
每當wc.DownloadString被調用,我的應用增加足跡。
由於WebClient已經實現了IDisposable,它應該在using指令後自動處理,還是我錯了?
你如何檢查內存使用情況?例如,虛擬內存可能會增加,因爲即使垃圾收集器處理它們,也會創建大量臨時對象。它只是沒有返回到系統,因爲它可能沒有必要。 –
目前,我只觀察Windows任務管理器中的值。但是,.Net Memory Profiler也會報告增加的值。我想這是用perfmon再次檢查內存使用情況以獲取更多信息。 – lenniep
是的,我會繼續進行perfmon分析,並且在程序運行很長時間後(爲了有清楚的情況)會花費全部內存轉儲。 –