思考
为什么3要耗比1,2那么多的内存?
1。
下面这个代码耗内存10M
using System;
using System.Data;
namespace ConsoleApplication1
{
class Csharp
{
static void Main()
{
atest c=new atest();
c.Test();
Console.ReadLine();
}
}
class atest
{
public void Test()
{
DataTable dt=new DataTable();
DataColumn dc=new DataColumn("a");
dt.Columns.Add(dc);
for(int i=0;i<1000;i++)
{
DataRow dr=dt.NewRow();
dr["a"]="a";
dt.Rows.Add(dr);
}
string tt=new string('c',10000);
for(int i=0;i<dt.Rows.Count;i++)
{
dt.Rows[i]["a"]=tt;
}
}
}
}
2。
下面这个代码耗内存10M
using System;
using System.Data;
namespace ConsoleApplication1
{
class Csharp
{
static void Main()
{
atest c=new atest();
c.Test();
Console.ReadLine();
}
}
class atest
{
public void Test()
{
DataTable dt=new DataTable();
DataColumn dc=new DataColumn("a");
dt.Columns.Add(dc);
for(int i=0;i<1000;i++)
{
DataRow dr=dt.NewRow();
dr["a"]="a";
dt.Rows.Add(dr);
}
for(int i=0;i<dt.Rows.Count;i++)
{
string tt=new string('c',10000);
}
}
}
}
3。
下面这个代码耗内存30M
using System;
using System.Data;
namespace ConsoleApplication1
{
class Csharp
{
static void Main()
{
atest c=new atest();
c.Test();
Console.ReadLine();
}
}
class atest
{
public void Test()
{
DataTable dt=new DataTable();
DataColumn dc=new DataColumn("a");
dt.Columns.Add(dc);
for(int i=0;i<1000;i++)
{
DataRow dr=dt.NewRow();
dr["a"]="a";
dt.Rows.Add(dr);
}
for(int i=0;i<dt.Rows.Count;i++)
{ string tt=new string('c',10000);
dt.Rows[i]["a"]=tt;
}
}
}
}