日期:2014-05-18  浏览次数:20894 次

.Net内存释放问题
我有个问题:
比如说我的对象A A的一个属性是Byte[]数组。现在有一个List<A> list 。我list.clear()完了之后list里边的每个A对象的Byte[]数组属性占用的内存是否释放掉了!请各位大侠指点一下小的!

------解决方案--------------------
使用clear()方法后只是清除了List的元素

Dispose(),用来释放非托管资源。

调用 Dispose() 后,不应该再访问这个对象,尽管你可以这么做。

Dispose() 没有清除表里面数据的功能

另外,调用完dispose()后,对象状态已经无法确定。。由GC来决定什么时候杀死他。
千万不要再访问它。否则程序随时都会崩溃。
------解决方案--------------------
只要你是托管数据,就交给GC吧,不必考虑这些问题。
------解决方案--------------------
探讨
使用clear()方法后只是清除了List的元素

Dispose(),用来释放非托管资源。

调用 Dispose() 后,不应该再访问这个对象,尽管你可以这么做。

Dispose() 没有清除表里面数据的功能

另外,调用完dispose()后,对象状态已经无法确定。。由GC来决定什么时候杀死他。
千万不要再访问它。否则程序随时都会崩溃。

------解决方案--------------------
一般由GC自动回收。
------解决方案--------------------
GC会自动回收,一般情况下你不用考虑这个。
------解决方案--------------------
你在其他地方如果有对byte[] 的引用的话 一般不会 如果没有 GC定时会清理的 当然 你不需要知道这些
------解决方案--------------------
除非占用系统资源(例如IO资源,数据库连接等)的地方需要手动释放,其他的都应该交由GC来处理。
------解决方案--------------------
探讨
我有个问题:
比如说我的对象A A的一个属性是Byte[]数组。现在有一个List<A> list 。我list.clear()完了之后list里边的每个A对象的Byte[]数组属性占用的内存是否释放掉了!请各位大侠指点一下小的!