.net关注GC回收的意义在哪里?
数据的流 2021-01-06 05:04:05 相信很多人面试的时候都聊过GC,关于GC的回收也都看过相关的一些文章,比如:
什么时候发生GC
1、当应用程序分配新的对象,GC的代的预算大小已经达到阈值,比如GC的第0代已满;
2、代码主动显式调用System.GC.Collect();
3、其他特殊情况,比如,windows报告内存不足、CLR卸载AppDomain、CLR关闭,甚至某些极端情况下系统参数设置改变也可能导致GC回收。
这个说法来自于微软相关文章的翻译,关于第1种情况的阈值,解释非常笼统非常抽象,没有给出具体的值、如何配置等等,比如我写一个程序运行中如何知道什么时候达到了阈值触发了回收。
那么问题来了,.net是基于托管的语言,GC的回收触发时机又是非常模糊和不确定,关注GC的意义在哪里?
是否做好非托管资源(文件、数据库连接等)的释放是不是就足够了?