summaryrefslogtreecommitdiff
path: root/spec/ruby/core/array/shared
diff options
context:
space:
mode:
authorNARUSE, Yui <nurse@users.noreply.github.com>2024-02-01 16:19:48 +0900
committerGitHub <noreply@github.com>2024-02-01 07:19:48 +0000
commit3fb51b93d25b0566b71249b1c7ccddf0dab91429 (patch)
tree403357f6ba15359b316a8b9092742037584f8b04 /spec/ruby/core/array/shared
parent7231fc5baa0a44ef6264c795071c5fbec8d1102d (diff)
merge revision(s) 82b57d7bfeefd717c10f7a5a3484aca6b3e708a3: [Backport… (#9795)
merge revision(s) 82b57d7bfeefd717c10f7a5a3484aca6b3e708a3: [Backport #20162] Fix memory leak when duplicating too complex object [Bug #20162] Creating a ST table then calling st_replace leaks memory because the st_replace overwrites the ST table without freeing any of the existing memory. This commit changes it to use st_copy instead. For example: RubyVM::Shape.exhaust_shapes o = Object.new o.instance_variable_set(:@a, 0) 10.times do 100_000.times { o.dup } puts `ps -o rss= -p #{$$}` end Before: 23264 33600 42672 52160 61600 71728 81056 90528 100560 109840 After: 14752 14816 15584 15584 15664 15664 15664 15664 15664 15664 --- object.c | 3 +-- test/ruby/test_shapes.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-)
Diffstat (limited to 'spec/ruby/core/array/shared')
0 files changed, 0 insertions, 0 deletions