아래 코드에서 'System.OutOfMemoryException'이 계속 발생합니다. 메모리 누수가 어디인지 알 수 없으며 누군가 내가 잘못하고있는 것을 설명 할 수 있다면 큰 도움이 될 것입니다. 감사!코드 검토 : OutOfMemoryException 문제
lock ((_tabs))
{
System.IO.StreamReader sr = null;
System.IO.MemoryStream ms = null;
try
{
Type[] t = { typeof(tsgPublicDecs.tsgClsTab) };
System.Xml.Serialization.XmlSerializer srl = new System.Xml.Serialization.XmlSerializer(typeof(ArrayList), t);
ms = new System.IO.MemoryStream();
srl.Serialize(ms, _tabs);
ms.Seek(0, 0);
sr = new System.IO.StreamReader(ms);
return sr.ReadToEnd();
}
finally
{
if (((sr != null)))
{
sr.Close();
sr.Dispose();
}
if (((ms != null)))
{
ms.Close();
ms.Dispose();
}
}
}
편집 :이 질문 몇 가지 답변하려면 :
- _tabs 많은 다른 질문이 나타납니다 아무것도 (채워되지 않는 이유는도 사용하지만 난해야합니다 그것에 대해 작성한 개발자에게 물어보십시오.
- 오류를 발생시키는 줄은 'srl.Serialize (ms, _tabs);'입니다.
- 이 오류는 임의적이며 직접 복제 할 수 없지만 몇 일이 지나면 실행됩니다.이 오류는 발생합니다. 이 때문에 나는 던져진 오류를 넘어서는 정보를 얻을 수 없다.
편집 2 : 모든 입력 감사합니다. 사용 방법을 추가하고 다른 가능한 메모리 누수를 찾는 것이 가장 좋은 방법 인 것 같습니다. 얼마나 빨리 사람들이 손을 빌릴 수 있는지를 알면 좋습니다!
"시도"를 사용하려는 경우 {} catch (예외) {} finally {}를 시도해야합니다. 즉, 캐치를 놓친 것입니다. –
_tabs의 크기는 얼마나됩니까? –
어떤 라인이 예외를 던지고 있습니까? – FrustratedWithFormsDesigner