Skip to content

Instantly share code, notes, and snippets.

@lmarburger
Last active March 29, 2016 14:59
Show Gist options
  • Save lmarburger/6f06803529f0847cc6c6 to your computer and use it in GitHub Desktop.
Save lmarburger/6f06803529f0847cc6c6 to your computer and use it in GitHub Desktop.
# Works fine
loop do
before_gc = ObjectSpace.each_object(Thread).count
GC.start
after_gc = ObjectSpace.each_object(Thread).to_a # <-- note #to_a in loop
$stdout.print "before_gc=#{before_gc} after_gc=#{after_gc.count}\n"
sleep 1
end
# Also works fine
begin
before_gc = ObjectSpace.each_object(Thread).count
GC.start
after_gc = ObjectSpace.each_object(Thread).count # <-- note #count in begin/while
$stdout.print "before_gc=#{before_gc} after_gc=#{after_gc}\n"
sleep 1
end while true
# LEAKS THREADS
begin
before_gc = ObjectSpace.each_object(Thread).count
GC.start
after_gc = ObjectSpace.each_object(Thread).to_a # <-- note #to_a in begin/while
$stdout.print "before_gc=#{before_gc} after_gc=#{after_gc.count}\n"
sleep 1
end while true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment