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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Taketoshi Aono(青野健利 a.k.a brn)
June 07, 2017
Programming
150
2
Share
javascriptのGC入門
javascriptのGCの特徴やどのように動作するかの解説
Taketoshi Aono(青野健利 a.k.a brn)
June 07, 2017
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.5k
JSON & Object Tips
brn
1
560
CA 1Day Youth Bootcamp for Frontend LT
brn
0
1.1k
Modern TypeScript
brn
2
870
javascript - behind the scene
brn
3
800
tc39 proposals
brn
0
960
プロダクト開発とTypeScript
brn
8
3k
React-Springでリッチなアニメーション
brn
1
760
Other Decks in Programming
See All in Programming
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
4
850
ふりがな Deep Dive try! Swift Tokyo 2026
watura
0
180
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
550
感情を設計する
ichimichi
5
1.4k
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
240
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.8k
Rethinking API Platform Filters
vinceamstoutz
0
11k
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
230
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
1k
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
240
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
390
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
520
Optimizing for Happiness
mojombo
378
71k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
400
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
95
Rails Girls Zürich Keynote
gr2m
96
14k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
180
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
190
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
140
Raft: Consensus for Rubyists
vanstee
141
7.4k
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
׀ ׀幠 幠耮 耮֮ ֮ ָ ָה הֲ ֲ׀ ׀ׂ
ְׂ ְת ת׃ ׃