二维List内存释放问题

barbara2008 2010-04-23 09:04:24
我现在有一个二维List : List<List<myObject>> myList;

myList里有对象若干, 都是用new的方式创建后加入到myList的, 现在我不需要这些对象了, 直接myList.Clear()这样可以清空内存吗?
或者还是用如下方法?


for(int i = 0; i < myList.Count; i++)
{
myList[i].Clear();
}

myList.Clear();


用哪种方法是正确的?
...全文
515 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongdawp 2010-04-28
  • 打赏
  • 举报
回复
Clear会释放对每个List的引用,但是myList的Capacity不会变,可以调用TrimExcess()
sdnjiejie65 2010-04-23
  • 打赏
  • 举报
回复
gc回收释放内存资源
Peter200694013 2010-04-23
  • 打赏
  • 举报
回复
C# 中垃圾回收由GC来做。定期或内存不够时会进行资源回收,不会出现内存泄漏的
barbara2008 2010-04-23
  • 打赏
  • 举报
回复
我写的程序在wince的平台下跑, 哪怕一点点内存泄露都对我很重要!!
barbara2008 2010-04-23
  • 打赏
  • 举报
回复
因为我观察了一下内存的使用情况, 发现并没有释放我所申请的内存大小, GC.Collect()和List.Clear()的方法都用了
barbara2008 2010-04-23
  • 打赏
  • 举报
回复

public void MyMethod()
{
for(int i = 0; i < myList.Count; i++)
{
myList[i].Clear();
}

myList.Clear();

for(int i = 0; i < NewList.Count; i++)
{
for(int j = 0; j < NewList[i].Count; j++)
{
myObject tmp = new myObject();
tmp = NewList.Clone() as myObject
myList[i].Add(tmp);
}
}

}

//这个方法是每几十秒调用一次, 我应该怎样去释放这些被new出来的资源, C#里没有delete关键字
//这样会不会造成内存泄露?
段传涛 2010-04-23
  • 打赏
  • 举报
回复
我平时都用list.Clear()
用循环释放 ,我真没有用过。 你可以测试一下,按原理不用循环
Peter200694013 2010-04-23
  • 打赏
  • 举报
回复
Clear()
// Removes all elements from the System.Collections.Generic.List<T>.
不需要这些对象时,垃圾回收由GC来做...
jianshao810 2010-04-23
  • 打赏
  • 举报
回复
但是没有这种释放的,myList.Clear();只是清空里面的项,myList还存在。要不 就是myList=null;
到时垃圾回收的时候 会自动 清除myList所指向向的对象
jianshao810 2010-04-23
  • 打赏
  • 举报
回复
这种myList.Clear();

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧