我有.Net应用程序,用户可以在其中打开和关闭许多Sqlite数据库文件,
一次一次。
我使用System.Data.SQLite DLL包装器
从一个数据库移动到另一个数据库时,connection.close()是否足够,
我在一些地方看到了GC.Collect()
如何正确处理这些数据库切换?
谢谢,Avi。
答案 0 :(得分:0)
此处有connection.close()
和GC.Collect()
的效果的详细说明:
System.Data.SQLite Close() not releasing database file
基本上connection.close()
只处理句柄但在垃圾收集器运行之前不释放数据库指针。
请注意GC.Collect()
是一项繁重的操作,如果您的上下文切换太频繁并且您不需要删除数据库文件,您可能最好将指针放在内存中,而.Net框架可以处理它
我的建议是,对这两个选项进行一些性能测试:
检查进程的延迟,内存使用情况和CPU使用情况。根据测试结果做出决定。
祝你好运![编辑] 阅读更多关于它,我发现了这个链接:
What is the difference between connection.Close() and connection.Dispose()?
根据问题,在使用using
语句或致电connection.Dispose()
时,无需调用GC.Collect()
方法。
干杯,