SQLite中的C#内存泄漏?

时间:2015-03-22 02:05:16

标签: c# sqlite

我在C#中使用sqlite。为了在数据库大小变大时测试性能,我编写了一个程序来生成内存不足的随机数据。 我发现我已经通过

创建了一个新的IDbCommand实例
IDbCommand cmd = dbConnection.CreateCommand() ;

每个新插入的方法,这就是内存泄漏的地方。如果我打电话给`

cmd.Dispose();`

执行SQLCommand后,一切正常。 通常,不会有大量的操作,所以我不介意为每个操作创建新的Command实例的时间。但如果不处理内存,那就是问题。

我有责任调用cmd.Dispose()或者它是sqlite-net的错误吗?

1 个答案:

答案 0 :(得分:2)

最好配置实现IDisposable的所有内容。

您可以使用using语句执行此操作:

using (IDbCommand cmd = dbConnection.CreateCommand())
{
    // Your code here
}

请注意,cmd超出了using语句块之外的范围。当执行超出该块时,using语句会释放您的IDisposable。它还会在出现异常情况时处理所有内容。