【发布时间】:2019-11-15 11:23:04
【问题描述】:
我在这个网络上阅读了很多关于何时应该使用GC.Collect() 的问题,但没有一个能解决这个问题。
如果我们以某种方式设法使用它,例如它释放大量内存,这是否一定是一件好事,而不是简单地依靠垃圾收集器来管理内存?
无论我的 ASP.NET 应用程序保持多空闲,或者经过了多少时间,或者操作完成了多少,当显式调用 GC.Collect() 时被释放的内存永远不会被处理(只有它上面的内存,就像它某种缓存。)
我想到的一个理论是,也许那些 3GB+ 没有被释放(而是应用程序释放高于该阈值的内存)的原因可能是由于重用部分内存,或者可能是其他一些有用的优化,但代价是当然,在应用程序的整个运行时使用该内存。
有人可以就这些问题分享一些见解吗?只要有机会,我就会遵循最佳实践并处理对象。没有任何非托管资源需要最终确定 - 它始终由我处置。
编辑:使用的垃圾收集器是工作站,而不是服务器。
【问题讨论】:
标签: c# asp.net .net garbage-collection .net-4.6