我有一个非常简单的C#方法,它从Oracle DB中读取行
using ( OracleDataReader reader = cmd.ExecuteReader( ) )
{
while ( reader.Read( ) )
{
//write row to an excel file using EPPlus
DoRender( reader, sheet );
++rowCount;
}
}
一切正常,但对于一些带有>的查询120.000行(它是一个导出工具)内存消耗达到> 1GB。关闭连接后,将再次释放内存。 使用诊断工具,可以轻松识别使用内存的组件:
(请注意,细节仅显示增量) 当然,excel编写者需要一些内存,但OracleInternal正在使用其中的大部分内容(这种趋势一直持续着。 我在用 Windows 4 64位上的.NET 4.6.1 64位 Oracle.ManagedDataAccess 12.1.2400(通过nuget,最新版本) EPPlus 4.0.5(通过nuget,最新版本)
任何暗示我可以做的不同或者这是否真的是DataAccess组件中的问题?