我在使用 Informix 时遇到了一个奇怪的问题(具体来说,我正在使用 IBM.Data.Informix 命名空间,4.10 Client SDK)。 我正在使用 ODBC 连接到 IBM Informix 数据库,但遇到了内存泄漏问题。 文档非常稀少,并且我被锁定使用当前已安装的驱动程序/SDK。 下面是我用于数据库上下文的代码:
public class IfxDbContext : IIfxDbContext
{
private readonly string _connectionString;
//private readonly IfxConnection _connection;
public IfxDbContext(string connectionString)
{
_connectionString = connectionString;
//IfxConnection conn = new IfxConnection(connectionString) {ConnectionString = connectionString};
//_connection = conn;
}
public IEnumerable<Item> GetItems()
{
var items = new List<Item>();
try
{
using (IfxConnection conn = new IfxConnection(_connectionString))
{
conn.Open();
using (IfxCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "VALID SQL COMMAND";
IfxDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
//add to items
}
}
}
}
catch(IfxException ex)
{
}
return items;
}
}
我已经尝试了释放和关闭所有可能的连接,但好像没有帮助。 我有什么遗漏吗?还是驱动程序存在问题?那么问题就变成了,我应该怎么样逐步释放内存? 应用程序达到大约1200 MB并崩溃。
我的特定错误是“解析器堆栈空间不足”和“内存分配失败”。
我有什么遗漏吗?