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
javascriptのGC入門
Search
Taketoshi Aono(青野健利 a.k.a brn)
June 07, 2017
Programming
2
150
javascriptのGC入門
javascriptのGCの特徴やどのように動作するかの解説
Taketoshi Aono(青野健利 a.k.a brn)
June 07, 2017
Tweet
Share
More Decks by Taketoshi Aono(青野健利 a.k.a brn)
See All by Taketoshi Aono(青野健利 a.k.a brn)
document.write再考
brn
6
3.1k
Parsing Javascript
brn
14
9.3k
JSON & Object Tips
brn
1
510
CA 1Day Youth Bootcamp for Frontend LT
brn
0
980
Modern TypeScript
brn
2
820
javascript - behind the scene
brn
3
750
tc39 proposals
brn
0
900
プロダクト開発とTypeScript
brn
8
2.9k
React-Springでリッチなアニメーション
brn
1
720
Other Decks in Programming
See All in Programming
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
10
6.4k
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
210
Swift Concurrency - 状態監視の罠
objectiveaudio
2
490
CSC305 Lecture 03
javiergs
PRO
0
240
XP, Testing and ninja testing ZOZ5
m_seki
3
580
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
170
Le côté obscur des IA génératives
pascallemerrer
0
140
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
1.2k
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
140
Building, Deploying, and Monitoring Ruby Web Applications with Falcon (Kaigi on Rails 2025)
ioquatix
4
1.8k
CSC305 Lecture 06
javiergs
PRO
0
210
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
270
Featured
See All Featured
Designing for Performance
lara
610
69k
Scaling GitHub
holman
463
140k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
The Cult of Friendly URLs
andyhume
79
6.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
860
Code Review Best Practice
trishagee
72
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Site-Speed That Sticks
csswizardry
11
890
Transcript
javascript Garbage Collector Overview
せ: @brn (ꫬꅿ⨳ⵃ) 耵噟: ؿٗٝزؒٝسؒٝآص،٥iOSؒٝآص، ⠓爡: Cyberagent ،سذؙأةآؔRightSegment٥AI Messenger ـؚٗ:
http://abcdef.gets.b6n.ch/
What is Garbage Collector? Garbage Collectorהכծفؚٗٓي⚥חⶴ䔲גؔـآؙؑزך 灶唱遤ְծًٌٔ걄㚖然⥂׃湫ׅךկ
What is Garbage Collector? var x = { a: 1,
b: 2 } Object Field a Field b Other Objects Heap ًٌٔⶴ䔲ג
What is Heap? Stack ꟼ侧 = ⠓陽 Heap مٙ؎زن٦س 陽✲ꐮ
What is Heap? Stackכꟼ侧⽃⡘דⶴ䔲גծꟼ侧ָ穄✪ׅה荈⹛ד灶唱ׁג׃ת ֲկ Heapכفؚٗٓيָ㶷㖈׃גְכ䌢ח⦼⥂㶷׃גֶֽկ javascriptכ䌢חHeapח⦼ⶴ䔲ג♳ծStackכ湫䱸ׁזְךדծ 罋ִ䗳銲כזְկ
What is Heap? Stack Process Stack Heap Process Stack Heap
Process 饯⹛儗 㹋遤⚥ 㹋遤⚥(㣐ꆀⶴ䔲ג)
What is Heap? OUT OF MEMORY
Garbage Collector 㟓ִֺׅHeapכ铩ַָ䰾ꤐ׃זֽלְֽזְկ ׃גֻךָ Garbage Collector
Garbage Collector ًٌٔⶴ䔲ג var x = {} var y
= {} Heap Global x y
Garbage Collector Garbage CollectorָHeapךⵋ麦〳腉זؔـآؙؑزחو٦ؙ➰ֽ Heap Global x y
Garbage Collector ًٌٔⶴ䔲ג var x = {} var y
= {} y = null Heap Global x y
Garbage Collector Garbage CollectorָHeapךⵋ麦〳腉זؔـآؙؑزחو٦ؙ➰ֽ Heap Global x y
Garbage Collector ًٌٔⶴ䔲ג var x = {}; var y
= {x: x}; x = null y.x = null Heap Global x y
Garbage Collector Garbage CollectorָHeapךⵋ麦〳腉זؔـآؙؑزחو٦ؙ➰ֽ Heap Global x y
Garbage Collector ًٌٔⶴ䔲ג var x = {}; var y
= {x: x}; x = null y = null Heap Global x y
Garbage Collector Garbage CollectorָHeapךⵋ麦〳腉זؔـآؙؑزחو٦ؙ➰ֽ Heap Global x y
Garbage Collector Heap Global x y Garbage CollectorָHeapךو٦ָؙזְؔـآؙؑز灶唱ׅ
Garbage Collector Garbage CollectorָHeapךⵋ麦〳腉זؔـآؙؑزو٦ؙ و و٦ ٦ؙ ؙؿ ؿؑ
ؑ؎ ؎ؤ ؤ(Mark Phase) Garbage CollectorָHeapךⵋ麦♶〳腉זؔـآؙؑز灶唱 أ أؐ ؐ؍ ؍٦ ٦ف فؿ ؿؑ ؑ؎ ؎ؤ ؤ(Sweep Phase)
Garbage Collector ָֿ و و٦ ٦ؙ ؙ، ،ٝ ٝس
سأ أؐ ؐ؍ ؍٦ ٦ف ف(Mark And Sweep) הְֲ،ٕ؞ٔؤيדׅկ
Garbage Collector ׃ծֿךMarkPhaseהSweepPhaseכ ؔـآؙؑزךخٔ٦וךדծفؚٗٓيך؟؎ؤח״גכծ ꬊ䌢ח頾蚚ַַָתׅկ ךծ植㖈ךـٓؐؠדכֿך⹛⡲㼰׃בא遤ֲծ ؎ ؎ٝ ؙٝ
ؙٔ ًٔ ًٝ ٝة ةٕ ٕGC(Incremental GC) הㄎל䩛岀ָ欽ְגְתׅկ זחMark&Sweepדفؚٗٓيָ⨡姺׃ג׃תֲֿה Stop the world הㄎןתׅկ
Incremental Garbage Collection Garbage CollectorָHeapךⵋ麦〳腉זؔـآؙؑزחو٦ؙ➰ֽ Heap Global x y 中断
Incremental Garbage Collection Garbage CollectorָHeapךو٦ָؙזְؔـآؙؑز灶唱ׅ Heap Global x y 中断
Incremental Garbage Collection Incremental GCכMark Phaseך鷿⚥ד撑ָ㢌⻉ׅ〳腉䚍ָ֮ծ ٓ؎زغٔ،(WriteBarrier) ה״לծ撑ָ剅ֹ㢌ֿה嗚濼ׅ➬穈ָ䗳銲חזתׅկ
Incremental Garbage Collection var x = {} var y =
{} y.x = x; Object(x) Heap Object(y) WRITED
Incremental Garbage Collection Garbage CollectorכWriteBarrierח״גو٦ׁؙؔـآؙؑزכ灶唱דֹזְ Heap Global x y 中断
WRITED 削除しない
Incremental Garbage Collection Incremental GCכفؚٗٓيך⨡姺儗䫇ִך،ٕ؞ٔؤيד֮ծ GC荈⡤ך儗כⰋ⡤涸ח⠼ןתׅկ ָծ⡤䠬ך鸞䏝כֶֻ傍ֻ䠬ׄתׅկ
Summary ֿך项俱כꬊ䌢ח邌涸ז铡僇דׅկ 劤勻GCכꬊ䌢ח醱꧟דծ➂겲ך〝兰ך穠兪הדְֲ״ֲזךזךדծ 莆ָ֮倯כה帾ֻ锃ץגגְֻׁկ ֮הծhttps://github.com/authorNari/minigcח449遤ךminiGCהְֲꬊ䌢؝ٝ ػؙزז㹋鄲ָ֮ךדծ鋅גגְֻׁկ ֿך ؖك٦آ؝ؙٖءّٝך،ٕ؞ٔؤيה㹋鄲הְֲ劤ֶָׅׅדׅկ https://www.amazon.co.jp/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC %E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%A2%E3%83%AB
%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E5%AE%9F%E8%A3%85-%E4%B8%AD%E6%9D %91-%E6%88%90%E6%B4%8B/dp/4798025623
׀ ׀幠 幠耮 耮֮ ֮ ָ ָה הֲ ֲ׀ ׀ׂ
ְׂ ְת ת׃ ׃