2

我正在使用 C++/CLI 和 .Net 4.0(托管 c++),我的 IDE 是 Visual Studio 2012 RC。

我的程序几乎完全是用 C++/CLI 编写的(我只有五行本机代码),我想知道垃圾收集的效率如何,以及它是否真的对我有用。

当我启动我的程序(我正在使用一些表格)时,它需要大约 3-5 MB RAM。但是在程序运行一段时间后(相同的代码一遍又一遍地运行并输入新信息)它使用越来越多的内存(5-15分钟后大约需要10-25 MB RAM)并且RAM的数量只会增加?

为什么是这样?这不正是垃圾收集应该防止的吗?!

每分钟左右强制垃圾收集会很糟糕吗?

4

1 回答 1

6

为什么是这样?这不正是垃圾收集应该防止的吗?!

垃圾收集器不会(必然)持续运行。它根据需要运行,如果没有内存压力,往往不会经常运行。如果您的系统有大量空闲内存,GC 不会总是频繁运行,因此您可以看到内存增长。这不是问题 - 使用“未使用”内存没有问题,只要系统进入内存压力更大的情况,它就会清理。

但是,垃圾收集器仍然可以工作 - 您不必担心信任它。您不会使用纯托管代码泄漏内存 - 尽管有时您可能会使用比预期更多的内存。

于 2012-08-13T16:17:53.663 回答