Skip to content
  • NARUSE, Yui's avatar
    aeffb5e2
    merge revision(s) 6c252912: [Backport #20145] · aeffb5e2
    NARUSE, Yui authored
    	Memory leak when duplicating identhash
    
    	[Bug #20145]
    
    	Before this commit, both copy_compare_by_id and hash_copy will create a
    	copy of the ST table, so the ST table created in copy_compare_by_id will
    	be leaked.
    
    	    h = { 1 => 2 }.compare_by_identity
    
    	    10.times do
    	      1_000_000.times do
    	        h.select { false }
    	      end
    
    	      puts `ps -o rss= -p #{$$}`
    	    end
    
    	Before:
    
    	    110736
    	    204352
    	    300272
    	    395520
    	    460704
    	    476736
    	    542000
    	    604704
    	    682624
    	    770528
    
    	After:
    
    	    15504
    	    16048
    	    16144
    	    16256
    	    16320
    	    16320
    	    16752
    	    16752
    	    16752
    	    16752
    	---
    	 hash.c                 | 10 +++++++++-
    	 test/ruby/test_hash.rb | 10 ++++++++++
    	 2 files changed, 19 insertions(+), 1 deletion(-)
    aeffb5e2
    merge revision(s) 6c252912: [Backport #20145]
    NARUSE, Yui authored
    	Memory leak when duplicating identhash
    
    	[Bug #20145]
    
    	Before this commit, both copy_compare_by_id and hash_copy will create a
    	copy of the ST table, so the ST table created in copy_compare_by_id will
    	be leaked.
    
    	    h = { 1 => 2 }.compare_by_identity
    
    	    10.times do
    	      1_000_000.times do
    	        h.select { false }
    	      end
    
    	      puts `ps -o rss= -p #{$$}`
    	    end
    
    	Before:
    
    	    110736
    	    204352
    	    300272
    	    395520
    	    460704
    	    476736
    	    542000
    	    604704
    	    682624
    	    770528
    
    	After:
    
    	    15504
    	    16048
    	    16144
    	    16256
    	    16320
    	    16320
    	    16752
    	    16752
    	    16752
    	    16752
    	---
    	 hash.c                 | 10 +++++++++-
    	 test/ruby/test_hash.rb | 10 ++++++++++
    	 2 files changed, 19 insertions(+), 1 deletion(-)
Loading