Smalltalk和垃圾回收

3

Smalltalk有自动垃圾回收,对吗?那么,这是否意味着我可以像下面这样做而不会有意外的副作用?

transactions := Set new.
transactions add: tran1.
transactions add: tran2.
transactions add: tran3.
transactions add: tran4.
...
transactions add: tran899.
transactions add: tran900.

|||  ~~ Do some stuff ~~  |||

transactions post.
transactions := Set new.
1个回答

5

是的,当您重新分配事务变量时,引用计数将降至零,并且以前被引用的对象将立即清理。


2
Smalltalk语言规范中没有保证实现将使用引用计数垃圾收集器。事实上,我知道的所有实现都使用追踪收集器而不是引用计数收集器。 - Jörg W Mittag
是的,但无论如何,@ctote问的是他是否可以毫无问题地这样做...答案是肯定的...GC会处理“transactions”中的旧引用并保留新引用。 - EstebanLM
什么是“post”方法?为什么“post”被定义为Set?如果post方法具有导致Set存储的副作用,则可能无法进行垃圾回收。 - David Buck
那个幻灯片并没有说Smalltalk使用引用计数。它有一张幻灯片是用来解释引用计数的。 - Frank Shearar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接