请问,如何释放对象?
List<string> list = new List<string>();
foreach(...)
{
if(...)
{
list = new List<string>(){...}
...
...
}
}
由于有大量数据,出现这种创建集合的对象,出现内存不足。请问如何释放先前的list呢?
------解决方案--------------------只看这段代码,是没问题的。
当你new新的List时,原来的会在GC时释放。
这个list会有多大,又占了多少内存?
------解决方案--------------------你这个代码是没有问题的。
托管对象的话一般不用考虑释放内存的事情,CLR自动执行内存回收操作。
对于非托管资源,不能自动回收掉,要注意手动释放。
------解决方案--------------------不需要释放。CLR会自己回收的。
------解决方案--------------------List<string> list =null;// new List<string>();//new 出来又不用,浪费掉了
foreach(...)
{//foreach 下面有new List<string>;数据又不会全部存放在上面,不知道你要干什么
if(...)
{
list = new List<string>(1000){...}//如果可以预先知道会有多少个,先分配好空间,不然是2倍增长
...
...
//如果这里处理完了,
//那么可以
list=null;
GC.Collection();//强制回收内存
}
}
读过3w条 xml数据~
整个程序运行占用150多M 你可以参考一下
------解决方案--------------------用托管语言只要保证没有“死”引用造成的内存泄露 基本上不需要管内存的事情
如果需要考虑手动释放内存这种事情的时候 请使用低级语言去"硬碰硬"
------解决方案--------------------你用 using(List<string> list = new List<string>()){foreach(...)
{
if(...)
{
list = new List<string>(){...}
...
...
}
}}试一下
------解决方案--------------------用完后,
list.Clear();
GC.Collect();