我正在运行ruby脚本并尝试查看其中的GC统计信息,但输出只是空字符串。以下是我脚本的内容:
class NumberPool
...
attr_accessor :sets
def initialize
@sets = []
end
def allocate
allocated_number = Random.rand(min_bound..max_bound)
sets.each do |set|
next unless set.range.include?(allocated_number)
return set.range.delete(allocated_number)
end
factor = allocated_number / batch_size
min = factor * batch_size
max = min + batch_size
sub = SubPool.new(min, max)
sub.range.delete(allocated_number)
sets.push(sub)
allocated_number
end
...
def run_test
GC::Profiler.enable
a = NumberPool.new
p a.allocate
GC::Profiler.report
end
puts run_test
当我运行它时,输出为:
$ ruby number_pool.rb
1855532
我希望在标准输出中看到GC报告中的内容。
答案 0 :(得分:0)
这是猜测,但GC可能没有触发(因为有足够的可用内存而无需收集垃圾)。
如果您通过添加GC.start强制GC会发生什么(修改代码如此):
p a.allocate
GC.start
GC::Profiler.report