面试题: C#的类当中如何手动释放内存/资源? 今天被面试官问到一个题目,C#里面的内存虽然是.net管理的,但是运行时间长了仍然可能会占据大量内存不释放。如果不使用系统级别的GC功能,在每个类当中如何添加功能使得一个类的实例在不被使用的时候,对象的内存/资源能够被释放?这个问题如何回答呢? 谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 GC.Collect(); 在你特别需要的时候,去执行它。 是考你析构函数?dispose对象? 应该是在考你 实现IDispose 接口。 托管资源没法手动释放,只能等GC,GC回收不回收由内部算法决定,外界不能强制干预。至于通知GC回收也仅仅是通知,可不一定回收之后你想释放的托管资源就一定会释放 确实应该是在问你IDispose 接口的实现。不过感觉如果是托管资源,没啥意义,没引用后GC会自动回收。 面试题?下次再有这样的问题 直接打面试官两拳 你就明白了GC垃圾回收机制 是自动运行的 现在的GC都分为三个级0级 当内存达到一个数值的时候会自动对所有标记释放的内存进行释放 然后重新排列内存一级和二级都是一样不同的系统 这个数值是不一样的32位操作系统下一个net程序好像最大能够占用四个G的内存 即使计算机没有那么大的内存条 也会写在虚拟内存的(好想每个系统都有这样的一个虚拟内存的文件)如果运行时间长了 大量内存不释放 也是程序代码有问题是不是有全局的集合 这样的东西 如果你往里面add一个对象不remove得话 他就永远占用内存 直到程序关闭 求助 数据封包处理的问题 解析表达式 C#下载文件的问题,请帮忙,谢谢 指定的参数已超出有效值的范围。 求一架构:VC6开发的客户端与C#开发的服务端通讯,客户端需接受服务端的返回值 数据问题? 请问如何实时监测后台数据库中数据的改变啊??谢谢!! 急求怎样把数据导如到数据库? 用bitmap截图,panel内小的控件叠在大的控件上,截出来只有在底层的大控件 没有全局变量怎么办? 请明白人给讲一讲 [分享交流]C#对Word、Excel、PDF等文件的操作
至于通知GC回收也仅仅是通知,可不一定回收之后你想释放的托管资源就一定会释放
GC垃圾回收机制 是自动运行的 现在的GC都分为三个级
0级 当内存达到一个数值的时候会自动对所有标记释放的内存进行释放 然后重新排列内存
一级和二级都是一样
不同的系统 这个数值是不一样的
32位操作系统下一个net程序好像最大能够占用四个G的内存 即使计算机没有那么大的内存条 也会写在虚拟内存的(好想每个系统都有这样的一个虚拟内存的文件)
如果运行时间长了 大量内存不释放 也是程序代码有问题
是不是有全局的集合 这样的东西 如果你往里面add一个对象不remove得话 他就永远占用内存 直到程序关闭