当调用GC.Collect()并释放超过3GB的空间时,这一定是件好事吗?

问题描述 投票:0回答:1

我已经在网络上阅读了许多有关何时应使用GC.Collect()的问题,但都没有解决这个问题。

如果我们设法以某种方式使用它,例如它释放了大量内存,这一定是一件好事,而不是简单地依靠垃圾收集器来管理内存吗?

[无论我的ASP.NET应用程序保持多空闲状态,或经过多少时间,或完成了多少操作,都不会寻址显式调用GC.Collect()时释放的内存(只有顶部的内存才是,例如一种缓存。)

[我想到的一种理论是,可能未释放那3GB +(而是应用程序释放了超出该阈值的内存)的原因可能是由于重用了它的一部分或其他一些有用的优化,而代价是当然,可以在应用程序的整个运行期间使用该内存。

有人可以对这些问题分享一些见解吗?我会遵循最佳实践,并在有机会时处理对象。没有任何托管的资源可以定案-它总是由我处置。

编辑:使用的垃圾收集器是工作站之一,而不是服务器。

c# asp.net .net garbage-collection .net-4.6
1个回答
0
投票

The garbage collector's job is to simulate a machine with infinite memory.如果您的系统有足够的未分配内存来继续运行,为什么收集器应该花费CPU周期执行识别未引用对象的艰苦工作?这是零成本的性能成本。

[如果单独使用,当系统内存不足时,收集器将运行并释放这3GB。在此之前,它处于休眠状态。

© www.soinside.com 2019 - 2024. All rights reserved.