【问题标题】:Automatic memory management == garbage collection?自动内存管理 == 垃圾收集?
【发布时间】:2013-01-05 20:02:09
【问题描述】:

一位朋友正在用非英语语言写一本书,但在翻译垃圾收集 (GC) 时遇到了问题。另一方面,自动内存管理 (AMM) 的翻译效果非常好。

Wikipedia article on GC 指出 GC 是 AMM 的一种形式。同一篇文章还指出,引用计数 (RC) 是垃圾收集的一种形式。所以,看起来我们有 AMM 作为 GC 的超集,而 GC 作为 RC 的超集。但是,有许多非正式文本可以互换使用 GC 和 AMM。因此,似乎可以有把握地说,AMM(也称为 GC)是通过跟踪指针或依赖引用计数来识别(不)可达对象来实现的。

我的问题是:有没有不能归类为 GC 的 AMM 技术?或者,等效地,GC 和 AMM 之间的区别是否合理?

请随意评论我对 AMM (GC) 分类的疯狂猜测 :-)

【问题讨论】:

  • 不翻译“垃圾收集”怎么样?这就是我和我遇到的几乎每个人在用我的母语谈论它时都会做的事情。毕竟这是标准术语。
  • 嗯,这也是一个选项。但是,我发现用母语思考事物可以提高生产效率。当然,我们也可以用英语思考。但是我们可能在母语为母语的人中处于劣势......
  • 在我的书中,一个好的借词总比一个糟糕的翻译好。对母语材料的理解没有优势(在 IT 中你不能在不遇到英文单词的情况下做任何事情,在这种情况下,字面意思对理解技术含义几乎没有用处),只会伤害对外语的理解材料(这是大部分有价值的材料,除非您的母语是英语)。

标签: memory-management garbage-collection


【解决方案1】:

通常情况下,这些术语没有官方定义。但是您可以考虑,例如,C++ 的RAII idiom 一种自动内存管理形式。它与引用计数或垃圾收集完全不同。

【讨论】:

  • 你似乎是对的。我没有考虑过这一点,因为我假设 AMM 只处理基于堆的对象。但是话又说回来,当然应该将智能指针视为一种 AMM 技术......
  • 当然,智能指针也使用引用计数,但它们与通常的引用计数不同,因为计数保存在指针中而不是对象本身中。然而,维基百科仍然将它们视为一种 GC 方法。这真的让 Catfish_Man 感到困惑。世界就是这么复杂……
【解决方案2】:

我认为这更多的是常见用法和读者期望的问题,而不是精确的定义。当然,任何自动内存管理技术都会“收集垃圾”,因此是 GC。但在实践中,如果你说“GC”,人们会认为你指的是具有更具体属性的东西(通常:非确定性终结、未引用对象的自动检测、收集循环的能力),如果你不是,就会感到困惑.

【讨论】:

  • 引用计数通常被视为GC,可以确定性地实现...
  • 我大部分时间都是 ObjC 程序员,所以手动引用计数、自动引用计数和跟踪 GC 都是可用的选项。将引用计数称为 GC真的 让我们感到困惑 :)
猜你喜欢
  • 2013-04-25
  • 2012-11-30
  • 1970-01-01
  • 2012-04-30
  • 2011-02-26
  • 2010-09-19
  • 2016-07-31
  • 2011-10-22
  • 1970-01-01
相关资源
最近更新 更多