Issue #19906 has been updated by HParker (Adam Hess).
Updated reproduction script:
Maybe this is a better reproduction?
```ruby
a = RubyVM::InstructionSequence.compile("foo(bar: :baz)").to_binary
10.times do
500_000.times do
RubyVM::InstructionSequence.load_from_binary(a)
end
puts `ps -o rss= -p #{$$}`
end
```
before:
```
20244
31760
40572
48468
55324
63712
71260
79552
87224
94492
```
after:
```
13156
16072
16080
16620
16620
16620
16628
16672
16672
16672
```
----------------------------------------
Bug #19906: fix kwarg memory leak
https://bugs.ruby-lang.org/issues/19906#change-104805
* Author: HParker (Adam Hess)
* Status: Closed
* Priority: Normal
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
GitHub PR:
https://github.com/ruby/ruby/pull/8556
ci info tracks kwargs and which are shared across aliases
```ruby
30.times do
100_000.times do
def foo(k:); yield; end
alias bar foo
undef foo
end
puts `ps -o rss= -p #{$$}`
end
```
before:
```
30364
45120
59700
73932
88512
102680
116884
130884
145308
159688
174468
188680
203016
216908
231568
246096
260592
274900
289168
303420
317620
331956
346148
360708
374880
389172
403472
417824
432016
446040
460196
474604
489152
503248
517504
531944
546228
560520
574760
589108
```
after:
```
8760
8940
9156
9540
9548
9548
9548
9548
9548
9548
9548
9548
9548
9548
9548
9548
9548
9548
9548
9548
9556
9564
9564
9564
9564
9564
9564
9564
9564
9564
9564
9564
9564
9576
9744
9744
9744
9744
9744
9936
```
--
https://bugs.ruby-lang.org/