GC问题。求大神指点。

维秀斯丢丢 2016-10-27 03:27:26
一个方法返回一个比较大的List对象,如果再调用它时不用变量接收它的返回值,那么这个方法返回的对象会被GC回收吗,在什么时候回收呢?有什么工具能看内存的变化吗?
...全文
350 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
维秀斯丢丢 2016-10-28
  • 打赏
  • 举报
回复
引用 9 楼 closurer 的回复:
只能说可以被回收,因为这个托管的 List 对象已经没有了引用。 至于什么时候被回收,我没有看到过任何准确的说法。.net runtime 也不是开源的,所以无从得知。 如果你找到答案了,请告诉我。
嗯 老板 要我测试一个开源组件的内存使用情况,我真找不到什么东西来查看啊,几乎只能看到内存越来越大。
闭包客 2016-10-27
  • 打赏
  • 举报
回复
只能说可以被回收,因为这个托管的 List 对象已经没有了引用。 至于什么时候被回收,我没有看到过任何准确的说法。.net runtime 也不是开源的,所以无从得知。 如果你找到答案了,请告诉我。
xiaoruanzhu 2016-10-27
  • 打赏
  • 举报
回复
我也过来学习下 坐等高手
维秀斯丢丢 2016-10-27
  • 打赏
  • 举报
回复
引用 4 楼 D56233577 的回复:
调试→窗口→显示诊断工具,里面可以查看内存情况,如果发生回收也会有粗略的显示。
我的是vs2013 并没有找到这个工具呀。
维秀斯丢丢 2016-10-27
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
回收对象占用内存并不会让进程所申请的内存减少,空闲内存会留给今后分配,并不会即时收缩空间。
比如一个控制台程序,我new了一个集合(万条数据) 然后将其引用赋值为Null,再调用GC.Collect() ,在操作系统的任务管理器里,可以看到进程的内存空间变少了,但变少的部分, 没有这个对象刚建立时增加的内存 一样大。
  • 打赏
  • 举报
回复
回收对象占用内存并不会让进程所申请的内存减少,空闲内存会留给今后分配,并不会即时收缩空间。
D56233577 2016-10-27
  • 打赏
  • 举报
回复
调试→窗口→显示诊断工具,里面可以查看内存情况,如果发生回收也会有粗略的显示。
维秀斯丢丢 2016-10-27
  • 打赏
  • 举报
回复
引用 1 楼 D56233577 的回复:
有可能被回收,也有可能不被回收,要看具体的情况,即使回收,具体时刻也不是你决定的,尽管用就是,调试模式下的诊断工具可以看到内存变化。
什么工具》?
维秀斯丢丢 2016-10-27
  • 打赏
  • 举报
回复
什么诊断工具呀?
D56233577 2016-10-27
  • 打赏
  • 举报
回复
有可能被回收,也有可能不被回收,要看具体的情况,即使回收,具体时刻也不是你决定的,尽管用就是,调试模式下的诊断工具可以看到内存变化。

110,502

社区成员

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

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

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