.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); 
+3

可能的一个正在运行的32位应用程序,而另一个是作为一个64位应用程序运行?尝试在开始计时之前尝试打印出一条消息,请参阅[如何确定我的应用程序是作为32位还是64位应用程序运行?](https://*.com/q/266082) 。 – dbc

+2

@dbc您对“完全框架版本 –

+0

”默认选中“更喜欢32位”很高兴提供帮助。那么,添加一个答案,或者将其作为“不能再现的问题或简单的印刷错误”来解决? – dbc

“首选32位”是默认选中的完整框架版