내 응용 프로그램 중 하나에서 메모리 누수처럼 보이는 문제가 있습니다 (응용 프로그램이 시간이 지남에 따라 더 많은 메모리를 사용하고 약 1 주일 후에 작업이 중단됩니다).메모리 누수 및 약한 참조
필자가 작성한 클래스와 관련된 누수를 감지하여 수정했으며 (sos.dll로 얻은 힙 덤프와 비교하여 신속하게 알려주는) 누적 횟수를 늘리고 더 이상 증가시키지 않습니다.
현재 시간이 지남에 따라 극적으로 증가하는 것은 WeakReference
인스턴스이며, 이는 꾸준한 비율로 1,000 분의 1 분당 신규 인스턴스 WeakReference
으로 증가합니다.
내 코드는 WeakReference
을 직접 사용하지 않으며 직접 작성하지 않습니다.
많은 수의 WeakReference
인스턴스가 생성 될 수 있습니까? 내가 VB.NET을 사용하고
, 비주얼 스튜디오 2008 및 .NET 3.5
ORM을 사용하고 있습니까? (Entity Framework, Linq-to-SQL, NHibernate와 같은) 당신의 웹 애플리케이션인가? – xanatos
Microsoft의 [CLR 프로파일 러] (http://www.microsoft.com/download/en/details.aspx?id=16273)를 사용하여 참조를 보유하고 있는지 확인해 보셨습니까? –
내 응용 프로그램은 로컬 응용 프로그램 (직렬 포트 또는 TCP 소켓을 통해 다른 장치와 통신)입니다. 내가 사용하는 유일한 ORM은 LINQ2SQL이며, 이는 자주 사용되지 않는 보조 기능입니다 (사용자가 특별히 해당 기능을 호출하지 않는 한 호출되지 않습니다). 당신이 그것을 할 수 있다고 생각한다면 테스트를 위해 ORM 부분을 앱에서 완전히 잘라낼 수 있습니다. –