c#怎么清掉string[]和arraylist占用的内存

clear()方法我有使用,只是我会一直创建string[]、arraylist,反复的创建,感觉时间已久clear()处理了也有问题,程序卡顿了,给个null 有用吗

如果反复new大数组的话,且程序没优化的时候的确会卡,那是因为C#回收机制还没执行回收,如果要主动要求回收可以在每次Clear之后加一句 GC.Collect();

但是不建议这么做,你主动要求回收的时机肯定没有系统自动处理的时机要好,如果程序卡,那说明你程序有问题,优化你的程序,检查卡顿的原因,是数组大而反复new引起的还是你程序循环太多了频率高了引起的。

如果是反复new引起的,那就不要重复new,而采用固定长度递增增量。比如假设每次会多1-10个字符,那么数组每个块定为100或1000,则数组不够时再去new一块新数组,新数组的大小要多预留一个递增增量,减少new的次数。

如果是数组大引起某个循环长时间循环,先尝试用Application.DoEvents();释放下CPU。如果没有效果,那么将循环片段化,100000次循环,采用100循环一个单元,也可采用事件触发。不要独占CPU。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-15
程序结束或者跳出该程序之后,所占用的内存都会自动释放的

C# ArrayList 与 string、string[] 的转换
1、ArrarList 转换为 string[]
  ArrayList list = new ArrayList();
  list.Add("aaa");
  list.Add("bbb");
  //转换成数组
  string[] arrString = (string[])list.ToArray(typeof( string));

2、string[] 转换为 ArrarList
  ArrayList list = new ArrayList(new string[] { "aaa", "bbb" });

3、ArrayList 转换为 string
  ArrayList list = new ArrayList();
  list.Add("aaa");
  list.Add("bbb");
  //转换成数组
  string str= string.Join(",", (string[])list.ToArray(typeof( string)));

4、string 转换为 ArrayList
  string str="1,2,3,4,5";
  ArrayList b = new ArrayList( str.Split(',') );
第2个回答  2014-09-11
clear应该就可以了!
系统会自己处理的,不需要额外通过语句释放,还有减少重复定义,尽量使用已有的。本回答被提问者和网友采纳
第3个回答  2014-09-11
.net 中会有自带的垃圾回收机制

如果你想手工,可以使用 GC.Collect();
第4个回答  2014-09-11
.net framework的垃圾回收机制会自动处理这些事情的。
相似回答