Tag: 垃圾回收

固定对象时的GC行为

在从mscorlib浏览PinnableObjectCache的代码时,遇到以下代码: for (int i = 0; i < m_restockSize; i++) { // Make a new buffer. object newBuffer = m_factory(); // Create space between the objects. We do this because otherwise it forms // a single plug (group of objects) and the GC pins the entire plug making // them NOT move to Gen1 and […]

GC或不GC

我最近看到两个非常好的教育语言会谈: Herb Sutter 首先介绍了C ++ 0x的所有优秀特性,为什么C ++的未来似乎比以前更加光明,以及M $如何被认为是这个游戏中的一个好人。 这个话题围绕着效率展开,以及如何最小化堆活动通常会提高性能。 另一个由Andrei Alexandrescu推动,从C / C ++转换到他的新游戏改变者D。 D的大部分东西看起来非常有动力和devise。 但是,有一件事让我感到惊讶,就是D推动垃圾收集,所有的类都是通过引用创build的 。 更令人困惑的是,在“ 资源pipe理 ”部分特别指出了“D编程语言参考手册”中的下列内容: 垃圾回收消除了在C和C ++中所需的单调乏味,容易出错的内存分配跟踪代码。 这不仅意味着更快的开发时间和更低的维护成本,而且最终的程序运行速度更快 ! 这与萨特关于最小化堆活动的不断讨论相冲突。 我非常尊重Sutter和Alexandrescou的见解,所以我对这两个关键问题感到有点困惑 不通过引用创build类实例会导致很多不必要的堆活动吗? 在哪些情况下我们可以使用垃圾收集而不牺牲运行时间性能?