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>