我在C#中使用sqlite。为了在数据库大小变大时测试性能,我编写了一个程序来生成内存不足的随机数据。 我发现我已经通过
创建了一个新的IDbCommand实例IDbCommand cmd = dbConnection.CreateCommand() ;
每个新插入的方法,这就是内存泄漏的地方。如果我打电话给`
cmd.Dispose();`
执行SQLCommand后,一切正常。 通常,不会有大量的操作,所以我不介意为每个操作创建新的Command实例的时间。但如果不处理内存,那就是问题。
我有责任调用cmd.Dispose()或者它是sqlite-net的错误吗?
答案 0 :(得分:2)
最好配置实现IDisposable
的所有内容。
您可以使用using
语句执行此操作:
using (IDbCommand cmd = dbConnection.CreateCommand())
{
// Your code here
}
请注意,cmd
超出了using
语句块之外的范围。当执行超出该块时,using
语句会释放您的IDisposable
。它还会在出现异常情况时处理所有内容。