在MRI Ruby 2.0中,GC.start
有多彻底?
它是否尝试垃圾收集所有不再引用它们的对象?或者只有GC对象认为是否必要?
我试图跟踪我所拥有的某个类的对象数量,并且它似乎继续增加,即使我认为某些对象不再具有对它们的引用。使用GC.start
并不能解决此问题。我没有使用任何C扩展,因此无法使事情变得复杂。
编辑:我遇到的问题与Ruby Symbol#to_proc leaks references in 1.9.2-p180?中的问题相同 - 当我认为它们应该被垃圾收集时,对象仍然存在,就像在这种情况下,问题一样与使用隐式Symbol
- >有关Proc
。但是,很高兴知道GC.start
是否应该垃圾收集所有对象,或者仅仅收集MRI认为垃圾收集所需的任何内容。