C# 从C Web API返回DataTable对象时是否存在内存泄漏问题

C# 从C Web API返回DataTable对象时是否存在内存泄漏问题,c#,.net-core,webapi,C#,.net Core,Webapi,我有一个.NETCore2.2WebAPI应用程序。它会返回大部分与服务器断开连接的web应用程序的大量JSON数据 在整个应用程序中,我从控制器返回System.Data.DataTable对象。请求可以这样处理: [HttpGet] public ActionResult<Dictionary<string, object>> Orders(string stuff, DateTime? start, DateTime? end) { var ret = new

我有一个.NETCore2.2WebAPI应用程序。它会返回大部分与服务器断开连接的web应用程序的大量JSON数据

在整个应用程序中,我从控制器返回System.Data.DataTable对象。请求可以这样处理:

[HttpGet]
public ActionResult<Dictionary<string, object>> Orders(string stuff, DateTime? start, DateTime? end)
{
  var ret = new Dictionary<string, object>();
  var pending_data = new DataTable();

  using (SqlCommand cmd = new SqlCommand("select stuff from stuff", connection)) {
    using (SqlDataReader rdr = cmd.ExecuteReader()) {
      pending_data.Load(rdr);
    }
  }
  ret.Add("pending_orders", pending_data);
  return Ok(ret);
}

像这样返回数据表会造成资源泄漏吗?我现在正在测试,内存使用率似乎比我预期的要高。我可能需要编写一些测试代码,手动调用GC,以查看每个请求后的基线是什么。

经过大量测试后,似乎没有明显的泄漏。由于错误,分配了过多的内存,但是在测试到服务器的多个并行连接后,没有一个内存出现泄漏。事实上,许多并行连接似乎使GC运行得更频繁,并且总体上减少了内存使用。

编写一些手动调用GC的代码-您做过任何分析吗?或者您可以使用dapper,用类似数量的代码行填充一些POCO列表,消除您的顾虑/检查是否是datatable导致了您预期的问题您正在看到的DataSet和从它派生的类没有被GC最终确定,因为在DataSet中已支持终结器