我在Pry玩垃圾收集时发现,由于某种原因,它似乎不起作用。我尝试了不同的方式来设置我的大阵列为nil
等,同时打破了我的头:“为什么在这个世界上,我无法用GC.start
释放令人恐惧的内存?”GC.start在Pry中没有效果,但是在IRB中有效
然后我去了IRB,突然它就起作用了!我想知道是什么原因造成的,如果你不知道答案但找到了答案,我也想知道如何。
我简单的代码(我在1.9.3-P327,和提防,这将吃掉1-2音乐会):
a = []
for i in (1..1000000)
a[i] = 'x' * 100
end
在这里,我后来发现内存增加,然后:
for i in (1..1000000)
a[i] = i
end
然后,
GC.start
出于某种原因,当时我在写这个,我成功地使GC.start实际解除分配。现在我再试一次,它什么都不做。 Ruby的魔力...... – valk