【 在 Knightmare (梦醒时分) 的大作中提到: 】
: 标 题: Re: Rust语言有没有希望?
: 发信站: 水木社区 (Wed Feb 12 16:55:21 2020), 站内
:
:
https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)#Reference_counting
:
: Reference counting[edit]
: Main article: Reference counting
: Reference counting garbage collection is where each object has a count of the number of references to it. Garbage is identified by having a reference count of zero. An object's reference count is incremented when a reference to it is created, and decremented when a reference is destroyed. When the count reaches zero, the object's memory is reclaimed.[6]
这不就是我说的么,计数为0的标记为垃圾,完全是 gc 的策略。delphi 里当引用计数降到0,直接就调用 destructor、释放内存,根本就不存在一个 gc。
:
: As with manual memory management, and unlike tracing garbage collection, reference counting guarantees that objects are destroyed as soon as their last reference is destroyed, and usually only accesses memory which is either in CPU caches, in objects to be freed, or directly pointed by those, and thus tends to not have significant negative side effects on CPU cache and virtual memory operation.
从这段话开始,都是在说使用 reference counting 策略的 gc 的缺点。这也是我前面说过的,reference counting 有很高的 overhead,所以正常情况下没人用这种策略来设计 gc;反过来如果用了 reference counting,那么大概率是用 weak reference 来解决循环引用的问题,实际上就是不管——用错了就内存泄露,没有 gc 给你接着
:
: 【 在 eGust (十年) 的大作中提到: 】
: : 标 题: Re: Rust语言有没有希望?
: : 发信站: 水木社区 (Wed Feb 12 15:45:15 2020), 站内
: :
: : 你的定义更麻烦,我的标准很简单,有没有 garbage collector
: :
: : 根据 wiki 条目
: :
https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
: :
: : 条目下面有4种常见策略,其中第一条的独立条目
: :
https://en.wikipedia.org/wiki/Tracing_garbage_collection: : Tracing garbage collection is the most common type of garbage collection – so much so that "garbage collection" often refers to tracing garbage collection, rather than other methods such as reference counting – and there are a large number of algorithms used in implementation.
: :
: : 虽然基于 reference counting 策略的 gc 带了 reference counting 字样,但并不是只要提到了 reference counting 就是 gc。比如 arc,到0了就直接释放,而不是等内存不够了,gc 才开始工作,引用计数为0的是标记为可以安全释放的对象
: :
: : 【 在 ilovecpp (cpp) 的大作中提到: 】
: : : 你们越说越复杂(且不正确)了。
: : : 一般对语言是否有gc的概念很简单:
: : : 缺省所有内存都自动回收,也许可以显式分配不自动回收的内存(opt-out):语言有gc。
: : : ...................
: :
: : --
: :
: : ※ 来源:·水木社区 newsmth.net·[FROM: 115.188.151.*]
:
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 39.114.185.*]
--
FROM 115.188.151.*