주기적으로 TCP 서버를 폴링하고 일부 사용자 데이터 (JSON 표기법)를 다운로드하는 WinForm 응용 프로그램이 있습니다. 어떤 이유로, 아래의 방법의 모든 호출이 응용 프로그램 증가 메모리 사용의 경우 : wc.DownloadString가 호출 될 때마다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;
}
}
, 내 응용 프로그램 증가의 풋 프린트.
WebClient에서 IDisposable을 이미 구현 했으므로 using 지시문 뒤에 자동으로 처리되어야합니까, 아니면 잘못 되었습니까?
:
IDisposable
와 GC에 관해서는, 나는이 대답있어? 가상 메모리는 예를 들어 가비지 수집기가 처리 할 때도 많은 임시 개체를 생성하여 증가 할 수 있습니다. 필요하지 않을 수도 있기 때문에 시스템에 반환되지 않습니다. –
현재 Windows 작업 관리자에서만 값을 관찰하고 있습니다. 그러나 또한 .Net 메모리 프로파일 러는 증가하는 값을보고합니다. 추가 정보를 얻으려면 perfmon을 사용하여 메모리 사용량을 다시 확인하십시오. – lenniep
예, perfmon 분석을 계속하고 프로그램을 오래 실행 한 후 전체 메모리 덤프를 수행합니다 (명확한 상황이 있음). –