Ants 프로파일 러가 가리키는 코드 조각이있어 메모리 누수의 원인이됩니다. 1 주일 동안 응용 프로그램을 모니터링했지만 메모리가 증가하고 돌아 오지 않는 것 같습니다. 그래서 나는 아래의 코드에 조금 관심이있다.타이머를 사용한 메모리 누수
public void printXML(XmlDocument doc)
{
//System.Threading.Timer timer = null;
XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true };
new System.Threading.Timer((_) =>
{
using (var writer = XmlWriter.Create(_folderDestination, settings))
{
// Task.Delay(15000).ContinueWith(_ => doc.Save(writer));
doc.Save(writer);
}
}).Change(15000, -1);
}
매번 방법 printXML
은 15secs의 기간 후에 _folderDestination
에 doc
를 작성합니다라고합니다. 이것이 내가 원하는 것입니다. 그러나 위의 코드는 메모리 누수가되고 메모리는 결코 되돌아 오지 않습니다. 그래서 누군가가 그것을 최적화하는 것을 도울 수 있다면 그것은 좋을 것입니다.
사이드 노트 : '타이머'가 가비지 수집 대상입니다. GC가 수행되지 않도록 타이머 참조를 저장해야합니다. –
내가 궁금한데, 왜 당신은'Task.Delay'로 해결책을 언급 했습니까? @SriramSakthivel이 언급했듯이 타이머로 GC를 수집하므로 코드가 실행되지 않습니다. 'Task.Delay'는 여기에서 훨씬 쉽습니다. – Dennis
@Dennis : 코드가 실행되고 15 초 효과가 있지만 메모리 문제가 더 걱정됩니다 – user726720