나는 하위 양식이있는 MDI입니다. 자식 폼에는 DataGridView이 있습니다. DataGrid보기에서 엄청난 양의 데이터를로드합니다. 나는 아이가 폐기 방법이라고 형성 닫을 때 나는 메모리가 내려 가지 않는 양식을 닫을 때하는 내가 DataGridView에.NET 메모리 누출?
this.dataGrid.Dispose();
this.dataGrid = null;
을 폐기하십시오. 나는 .NET memory profiler을 사용하여 메모리 사용을 추적한다. 나는 처음에 데이터 그리드를로드 할 때 (예상대로) 메모리 사용량이 높아지고로드가 완료되면 상수가된다.
양식을 닫으면 여전히 일정합니다. 그러나 메모리 프로파일 러를 사용하여 메모리의 스냅 샷을 찍으면 파일을로드하기 전에 어떤 모습으로 바뀌게됩니다. 메모리 스냅 샷을 작성하면 강제로 가비지 수집기가 실행됩니다.
무슨 일입니까? 메모리 누수가 있습니까? 아니면 가비지 컬렉터를 강제 실행해야합니까?
더 많은 정보 :
내가 더 이상 정보가 필요없는 양식을 폐쇄하고있다. 그래서 나는 데이터에 대한 언급을하지 않고있다.
업데이트
그것은 나에게 한 번에 모든 데이터를로드하기위한 요구 사항입니다. 메모리 사용량이 너무 많아서 많은 데이터가있을 때 뭔가 잘못하고 가비지 컬렉터가 실행되고 있지 않은지 궁금해합니다. 그러나 프로파일 러를 보면 다른 프로세스가 스냅 샷은 메모리 사용량이 감소합니다. 그래서 나는 무슨 일이 일어나고 있는지 이해할 수 없다.
어디에서/어떤 종류의 개체에 바인딩중인 데이터를로드하고 있습니까? – RichardOD
DataView에 바인딩하고 있습니다. –