From: normalperson@... Date: 2014-12-01T23:18:28+00:00 Subject: [ruby-core:66636] [ruby-trunk - Bug #10537] Repeated creation and garbage collection of WeakRef instances against a single object leaks memory Issue #10537 has been updated by Eric Wong. nobu, your patch looks fine to me. However, my original uses less memory and time on Alex's test on my Phenom II [ruby-core:66430] 17.64user 0.01system 0:17.64elapsed 100%CPU (0avgtext+0avgdata 9544maxresident)k [ruby-core:66457] 28.84user 0.01system 0:28.84elapsed 100%CPU (0avgtext+0avgdata 14172maxresident)k Unfortunately, no word from Alex, yet... On a related issue, Ctrl-C seems to be ignored with Alex's original code. I'll have to dig through the threads/signal handling code again to see what's wrong... (on Linux x86-64) ---------------------------------------- Bug #10537: Repeated creation and garbage collection of WeakRef instances against a single object leaks memory https://bugs.ruby-lang.org/issues/10537#change-50249 * Author: Alex Boyd * Status: Open * Priority: Normal * Assignee: * Category: lib * Target version: * ruby -v: ruby 2.2.0dev (2014-11-24 trunk 48552) [x86_64-darwin14] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- ~~~ruby require 'weakref' a = Object.new 1_000_000.times do WeakRef.new a end GC.start ~~~ The above results in Ruby consuming ~150 MB of RAM, all of which can only be freed by dropping `a`. This should not be the case - an object being weakly referenced should not itself hold a reference to the WeakRef (or any associated data) pointing at it. -- https://bugs.ruby-lang.org/