.NET Core数据表内存使用
问题描述:
200万个虚拟行的内存使用量使用.NET Core 2.0的数据表为694 MB,但使用.NET Framework为405 MB.NET Core数据表内存使用
为什么这种差异?
这是在控制台应用程序用于两个平台的相同的示例代码:
DataTable dt = new DataTable();
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.Columns.Add("c");
var watch = Stopwatch.StartNew();
for (int i = 0; i < 2000000; i++)
{
var row = dt.NewRow();
row["a"] = i;
row["b"] = i;
row["c"] = i;
dt.Rows.Add(row);
}
watch.Stop();
Console.WriteLine("Time:" + watch.ElapsedMilliseconds.ToString());
Console.WriteLine("Memory (MB):" + GC.GetTotalMemory(false)/1048576);
Console.WriteLine("Working set (MB):" + Process.GetCurrentProcess().WorkingSet64/1048576);
答
“首选32位”是默认选中的完整框架版
可能的一个正在运行的32位应用程序,而另一个是作为一个64位应用程序运行?尝试在开始计时之前尝试打印出一条消息,请参阅[如何确定我的应用程序是作为32位还是64位应用程序运行?](https://stackoverflow.com/q/266082) 。 – dbc
@dbc您对“完全框架版本 –
”默认选中“更喜欢32位”很高兴提供帮助。那么,添加一个答案,或者将其作为“不能再现的问题或简单的印刷错误”来解决? – dbc