C++/CLI - 垃圾收集的效果如何?它真的对我有用吗?

Hal*_*vil 2 .net c++ c++-cli visual-c++

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

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

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

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

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

Ree*_*sey 6

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

垃圾收集器不一定(必然)不断运行.它根据需要运行,如果没有内存压力,往往不会经常运行.如果您的系统有大量可用内存,则GC不会经常运行,因此您可以看到内存增长.这不是问题 - 使用"未使用"内存没有问题,前提是如果系统进入内存压力较大的情况下它会清理.

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

  • @HalfEvil是的,非常.由于许多原因,它适得其反.它实际上弄乱了GC的启发式,但也只是在你的程序中占用了处理时间而没有任何好处.记住 - 只要你的系统没有耗尽,使用内存就没有坏处.只要有空闲内存,使用它是"免费的"并且不会伤害任何东西. (3认同)