Project

General

Profile

Actions

Bug #19896

closed

Ruby method refinement memory leak

Added by HParker (Adam Hess) 8 months ago. Updated 8 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:114847]

Description

GitHub pull request: https://github.com/ruby/ruby/pull/8487

When method redefinitions happen, sometimes the final definition does not get cleaned up,

Reproducable with the same script from: https://bugs.ruby-lang.org/issues/19894

10.times do
  20_000.times do
    $c = Class.new do
      def foo; end
    end

    $m = Module.new do
      refine $c do
        def foo; end
      end
    end

    Class.new do
      using $m

      def initialize
        o = $c.new
        o.method(:foo).unbind
      end
    end.new
  end

  puts `ps -o rss= -p #{$$}`
end

before:

19792
20944
22224
23504
24784
26064
27344
28624
29776
31056

after:

18560
18560
18560
18560
18560
18560
18560
18560
18560
18560
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0