Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
BRUG: Evolution of Ruby GC
Search
Sergey Avseyev
October 03, 2013
Programming
1
290
BRUG: Evolution of Ruby GC
Sergey Avseyev
October 03, 2013
Tweet
Share
More Decks by Sergey Avseyev
See All by Sergey Avseyev
Couchbase Cluster: The Ruby SDK
avsej
1
88
Couchbase and Rails
avsej
3
1.4k
Other Decks in Programming
See All in Programming
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
420
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
390
Alba: Why, How and What's So Interesting
okuramasafumi
0
210
今年のアップデートで振り返るCDKセキュリティのシフトレフト/2024-cdk-security-shift-left
tomoki10
0
360
AWSのLambdaで PHPを動かす選択肢
rinchoku
2
390
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
280
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
6
700
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
400
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
100
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
240
DMMオンラインサロンアプリのSwift化
hayatan
0
180
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
13
2.2k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Being A Developer After 40
akosma
89
590k
Become a Pro
speakerdeck
PRO
26
5.1k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Optimizing for Happiness
mojombo
376
70k
Designing Experiences People Love
moore
139
23k
For a Future-Friendly Web
brad_frost
176
9.5k
A Tale of Four Properties
chriscoyier
157
23k
Automating Front-end Workflow
addyosmani
1366
200k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
210
Practical Orchestrator
shlominoach
186
10k
Transcript
Evolution of Ruby GC
alloca(3) void f1(int n) { int *r; r = alloca(n
* sizeof(int)); ... } int f2() { float x; f1(42); ... }
alloca(3) f2() void f1(int n) { int *r; r =
alloca(n * sizeof(int)); ... } int f2() { float x; f1(42); ... } float
alloca(3) f2() void f1(int n) { int *r; r =
alloca(n * sizeof(int)); ... } int f2() { float x; f1(42); ... } float f1(42) int *
alloca(3) f2() void f1(int n) { int *r; r =
alloca(n * sizeof(int)); ... } int f2() { float x; f1(42); ... } float f1(42) int[42] int *
alloca(3) f2() void f1(int n) { int *r; r =
alloca(n * sizeof(int)); ... } int f2() { float x; f1(42); ... } float
Reference Counting 1
Reference Counting 2
Reference Counting 1
Reference Counting 0
Reference Counting 1 1 Cycle!
Copying GC Root Objects
Copying GC Root Objects
Copying GC Root Objects
Copying GC Root Objects
Copying GC Root Objects
Copying GC Root Objects
Copying GC Root Objects
Copying GC Root Objects
Copying GC Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Sweep Root Objects
Mark & Lazy Sweep: 1.9 heap free list NULL
Mark & Lazy Sweep: 1.9 heap free list
Mark & Lazy Sweep: 1.9 heap free list
Mark & Lazy Sweep: 1.9 heap free list NULL
Mark & Lazy Sweep: 1.9 heap free list NULL
Mark & Sweep: 2.0 Root Objects Bitmap
Generational GC: 2.1 Большинство либо умирают молодыми, либо выживают и
существуют достаточно долго
Generational GC: 2.1 Root Objects Minor GC: 1
Generational GC: 2.1 Root Objects Minor GC: 1
Generational GC: 2.1 Root Objects Minor GC: 1
Generational GC: 2.1 Root Objects Minor GC: 1
Generational GC: 2.1 Root Objects Minor GC: 1
Generational GC: 2.1 Root Objects Minor GC: 1
Generational GC: 2.1 Root Objects Minor GC: 1
Generational GC: 2.1 Root Objects
Generational GC: 2.1 Root Objects
Generational GC: 2.1 Root Objects Minor GC: 2
Generational GC: 2.1 Root Objects Minor GC: 2
Generational GC: 2.1 Root Objects Remember Set
Generational GC: 2.1 Root Objects Remember Set Major GC
Generational GC: 2.1 Root Objects Remember Set Major GC
Generational GC: 2.1 Root Objects Remember Set Major GC
Generational GC: 2.1 Root Objects Remember Set
Generational GC: 2.1 Old New
Generational GC: 2.1 Old New Write Barrier
Generational GC: 2.1 Root Objects Remember Set val = rb_str_new("foo");
RARRAY_PTR(ary)[0] = val;
Generational GC: 2.1 Root Objects Remember Set val = rb_str_new("foo");
RARRAY_PTR(ary)[0] = val;
Generational GC: 2.1 Root Objects Remember Set val = rb_str_new("foo");
RARRAY_PTR(ary)[0] = val;
Спасибо Вопросы?