【发布时间】:2016-03-16 00:47:12
【问题描述】:
所以从 Ruby 2.2+ 版本开始引入符号的垃圾收集。我在 irb 中写了如下代码 sn-p :
before = Symbol.all_symbols.size #=>3331
100_000.times do |i|
"sym#{i}".to_sym
end
Symbol.all_symbols.size #=> 18835
GC.start
Symbol.all_symbols.size #=>3331
正如预期的那样,它收集了使用to_sym动态生成的所有符号。
那么 GC 是如何知道要收集哪些符号的呢?即使它们在程序中被引用,它会收集符号吗?符号垃圾回收是如何工作的?如果程序中引用了我创建的符号之一,它还会收集它吗?
我使用的是 Ruby 2.2.1。
【问题讨论】:
标签: ruby garbage-collection ruby-2.2