2017-10-14 51 views
0

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://stackoverflow.com/q/266082) 。 – dbc

+2

@dbc您對「完全框架版本 –

+0

」默認選中「更喜歡32位」很高興提供幫助。那麼,添加一個答案,或者將其作爲「不能再現的問題或簡單的印刷錯誤」來解決? – dbc

回答

0

「首選32位」是默認選中的完整框架版