过去几周我运行了一个C#应用程序。当我第一次启动它时,它有大约10000K的内存使用量。从那时起,我已经检查了它,内存占用了大约20000K。
我不知道.Net垃圾收集非常好,但这是否表明我确实有内存泄漏? GC现在不应该运行吗?
我在这里读到垃圾收集:
https://msdn.microsoft.com/en-us/library/ee787088(v=vs.110).aspx
他们在运行GC时有以下条件:
系统物理内存较低。 (我还有超过70000K的内存可供使用,所以不应该触发)
托管堆上已分配对象使用的内存 超过可接受的门槛。这个门槛是连续的 随着流程的进行调整。 (如何定义“可接受的”阈值?)
我不应该期望GC在几周的时间内运行吗?
答案 0 :(得分:0)
我不应该期望GC在几周的时间内运行吗?
不,你不应该期望GC.Collect及时发生。
当满足下列条件之一时,就会发生垃圾收集 真:
- 系统物理内存不足。
- 托管堆上已分配对象使用的内存超过可接受的阈值。这个门槛是连续的 随着流程的进行调整。
- 调用GC.Collect方法。几乎在所有情况下,您都不必调用此方法,因为垃圾收集器会运行 不断。此方法主要用于特殊情况 和测试。
阅读此内容以获取更多fundamental详细信息。