2014-06-17 6 views
0


사용자가 열 수있는 많은 .Sqlite 데이터베이스 파일, 한 번에 한 번씩 .Net 응용 프로그램이 있습니다.
그리고 System.Data.SQLite dll 래퍼를 사용합니다.
한 데이터베이스에서 다른 데이터베이스로 이동하는 동안 connection.close()가 충분합니까?
GC.Collect()를 호출하는 곳을 보았습니다.
이러한 데이터베이스 스위칭을 올바르게 처리하는 방법은 무엇입니까?Sqlite 데이터베이스 파일을 전환하는 동안

감사합니다. Avi.

+1

시도가 http://msdn.microsoft.com/en-us//library/yh598w02.aspx을 사용하여 충분히 이잖아 –

답변

0

connection.close() 여기 GC.Collect()의 효과에 대한 자세한 설명이 있습니다 :

System.Data.SQLite Close() not releasing database file

는 기본적으로 connection.close() 만 핸들을 처분하지만 가비지 콜렉터가 실행 될 때까지 DB 포인터를 해제하지 않습니다. GC.Collect()은 컨텍스트 전환이 너무 많고 DB 파일을 삭제할 필요가없는 경우 많은 작업이 필요하므로 메모 리에 포인터를두고 .NET Framework에서 처리하는 것이 좋습니다.

나의 추천 될 어떤 두 옵션에 대한 성능 테스트를 할 것입니다 : GC.Collect를 가진

  • GC.Collect를하지 않고
  • 프로세스의

검사 대기 시간, 메모리 사용량과 CPU를 용법. 테스트 결과에 따라 결정하십시오.

행운을 빈다.

[편집] 그것에 대해 좀 더 읽기, 나는이 링크를 발견하십시오 using 문을 사용하거나 connection.Dispose()를 호출 할 때 질문에 따르면

What is the difference between connection.Close() and connection.Dispose()?

을의를 호출 할 필요가 없습니다 GC.Collect() 방법.

건배,