我有一些读取文件的对象,将数据保存在数组中并进行一些操作。序列是创建对象A,使用对象A操作。创建对象B,使用对象B操作... 每个对象读取的数据可能大约为10 MB。所以最好的选择是在每个对象操作后删除每个对象。让说,我想我的计划分配大约10 MB内存,10MB不是* 1000个=对象1GB需要删除对象:实现在函数中处理或创建对象?
的对象是这样的:
class MyClass
{
List<string[]> data;
public MyClass(string datafile)
{
using (CsvReader csv = new CsvReader(new StreamReader(datafile), true))
{
data = csv.ToList<string[]>();
}
}
public List<string> Operate()
{
...
}
}
我的问题是:我应该执行处置?而这样做:
List<string> results = new List<results>();
using (MyClass m = new MyClass("fileM.txt"))
{
results.AddRange(m.Operate());
}
using (MyClass d = new MyClass("fileD.txt"))
{
results.AddRange(d.Operate());
}
...
从来就读,实施一次性的,当您使用unmmanaged资源(套接字,流,...)的建议,但在我的课,我只有大数据阵列。
另一种方式是为每个对象创建函数(我想GC将删除的功能自动创建一个对象):
List<string> results = new List<results>();
results.AddRange(myFunction("fileM.txt"));
results.AddRange(myFunction("fileD.txt"));
public List<string> myFunction(string file)
{
MyClass c = new MyClass(file);
return results.AddRange(c.Operate());
}
我编辑了你的标题。请参见“[应的问题包括‘标签’,在他们的头衔?(http://meta.stackexchange.com/questions/19190/)”,这里的共识是“不,他们不应该”。 – 2013-02-22 02:04:00