.NET 3.5 프로젝트에서 작업 중이며 여러 DataTables 및 DataTables 간의 관계가있는 DataSet을 사용하게됩니다. DataTables를 채우기 위해 SQL에서 특정 양의 레코드를 가져 와서 해당 레코드를 처리합니다. 레코드 처리가 끝나면 DataSet을 지우고 다음 레코드 집합을 가져 오려고합니다. Clear() 메서드가 메모리에서 행을 지우지 않는다는 것을 읽었습니다. 레코드를 가져 오는 동안 메모리가 계속 증가하지 않으면 서 DataSet을 재사용 할 수 있습니까?메모리 문제가없는 동일한 DataSet을 다시 사용하십시오.
답변
MSDN은 the DataSet.Clear
method clears the DataSet of any data by removing all rows in all tables.입니다. 모든 테이블과 관계를 그대로 유지하지만 모든 행을 지 웁니다.
어디서 읽었습니까?
다음 링크에서 Microsoft 직원의 응답을 읽으면 http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataset/thread/41e1b19a-b5ee-4cf2-ac1e-ff0c9a35b961을 볼 수 있습니다. DataSet.Clear() 및 DataSet.Dispose()는 GC로 행을 지우지 않습니다. .Clear() 메서드는 데이터 집합 내부의 모든 데이터 테이블에있는 모든 데이터 행을 제거합니다. 또한 .Dispose() 메서드는 DataSet MarshalByValueComonent의 기본 클래스로 구현되므로 데이터 집합의 관리되는 리소스를 해제하지 않습니다. – user31673
행이 지워지고, 메타 데이터 (테이블 관계 등이 아님)가 좋다고 말하면서, 당신이 원하기는 쉽지 않기 때문에 좋습니다. 메타 데이터가 각각 다르면 null을 지정하거나 새 메타 데이터에 할당합니다. –
- 1. Dialogs의 동일한 인스턴스를 다시 사용하십시오.
- 2. Web.config 동일한 섹션이나 필드를 다시 사용하십시오.
- 3. 여러 리소스 폴더에서 동일한 레이아웃을 다시 사용하십시오.
- 4. 동일한 모델 내의 다른 메소드에서 동일한 객체를 다시 사용하십시오.
- 5. cocos2d 작업을 다시 사용하십시오.
- 6. .NET SqlConnection 및 DataSet을 사용한 메모리 누수
- 7. 유효성 검사기를 다시 사용하십시오.
- 8. preventDefault를 다시 사용하십시오.
- 9. Cocos2d CocosNodes를 다시 사용하십시오.
- 10. ASP.NET MVC 3 : 모든 웹 사이트에서 동일한 양식을 다시 사용하십시오.
- 11. PowerShell에서 SSH 에이전트를 다시 사용하십시오.
- 12. DataSet을 학습해야합니까?
- 13. Markdown과 reStructuredText에서 동일한 README를 사용하십시오.
- 14. 여러 UIViewControllers에서 펜촉을 다시 사용하십시오
- 15. SQL 문장에서 표현식을 다시 사용하십시오.
- 16. 이미지를로드하려면 div 컨테이너를 다시 사용하십시오.
- 17. 새 SQLCommand를 만들거나 같은 것을 다시 사용하십시오.
- 18. VS 2010 솔루션에서 Nuget 패키지를 다시 사용하십시오.
- 19. NSDate 메모리 문제 (다시)
- 20. 제목 문제가없는 조각 대화 상자
- 21. UIView : 성능 문제가없는 둥근 모서리
- 22. .submit()이있는 브라우저간에 문제가없는 방법
- 23. [오류] [mv_main] - 메모리 부족. 메모리 양을 늘리려면 시작할 때 -Xmx 플래그를 사용하십시오. (java -Xmx128M ...)
- 24. 다른 클래스 파일의 변수를 AppWidget에 다시 사용하십시오.
- 25. DataSet을 사용하는 MySQL .NET
- 26. DataSet을 행에 직접 읽어들입니다.
- 27. DataSet을 조작하는 방법
- 28. .NET DataSet을 분할 하시겠습니까?
- 29. Typed Dataset을 사용하는 TransactionScope
- 30. DataSet을 StringTemplate에 동적으로 매핑하십시오.
선택 기준을 변경하고 다시 채우기를 호출하십시오. 테이블이나 관계가 변경된 경우에만 데이터 세트를 망칠 필요가 있습니다. 그런 다음 새 데이터 세트를 만들어 처리 함수에 전달하면됩니다. –
여기 내 관심사는 기억에 관한 것입니다. 이 프로세스는 수 시간 동안 실행되는 수천 개의 레코드에서 작동합니다. 메모리가 올바르게 관리되고 있는지 확인해야합니다. – user31673
그러나 DataRow가 더 이상 참조되지 않으면 GC에서 제거해야합니다. 지우기 또는 채우기를 수행하면됩니다. 조기에 최적화 된 것 같아서 관심사가 정당한 지 알아 내면 간단한 POC 스타일 시험이 가능합니다. –