C# 从C Web API返回DataTable对象时是否存在内存泄漏问题
我有一个.NETCore2.2WebAPI应用程序。它会返回大部分与服务器断开连接的web应用程序的大量JSON数据 在整个应用程序中,我从控制器返回System.Data.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
[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中已支持终结器