Issue #13783 has been updated by shyouhei (Shyouhei Urabe). Status changed from Open to Feedback Hmm, I don't know exactly why so this might not fork for you but at least on my machine, the situation seems fixed in latest trunk. Can you test? ``` zsh % rbenv shell 2.4.1 zsh % ruby -v ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin15] zsh % for i in 1 4 16 64; do /usr/bin/time -l ruby -e $i.'times {x=[]; 1000000.times {|i| x.push [i,i*3]} }' |& fgrep resident done 78553088 maximum resident set size 195747840 maximum resident set size 311996416 maximum resident set size 341024768 maximum resident set size zsh % rbenv shell trunk@svn zsh % ruby -v ruby 2.5.0dev (2017-08-04 trunk 59496) [x86_64-darwin15] zsh % for i in 1 4 16 64; do /usr/bin/time -l ruby -e $i.'times {x=[]; 1000000.times {|i| x.push [i,i*3]} }' |& fgrep resident done 73068544 maximum resident set size 183775232 maximum resident set size 183783424 maximum resident set size 185192448 maximum resident set size ``` ---------------------------------------- Bug #13783: Memory allocation / GC does not free unused memory https://bugs.ruby-lang.org/issues/13783#change-66018 * Author: opti (Andreas Opti) * Status: Feedback * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- 100.times {x=[]; 1000000.times {|i| x.push [i,i*3]} } 100.times should use (more or less) the same memory as 3.times, also GC.start after x=[] doesn't help! Problem: system begins swapping if doing that many times (using large data arrays running for longer times) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>