Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
javascriptのGC入門
Search
Taketoshi Aono(青野健利 a.k.a brn)
June 07, 2017
Programming
160
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
7
3.2k
Parsing Javascript
brn
14
9.6k
JSON & Object Tips
brn
1
600
CA 1Day Youth Bootcamp for Frontend LT
brn
0
1.1k
Modern TypeScript
brn
2
890
javascript - behind the scene
brn
3
830
tc39 proposals
brn
0
1k
プロダクト開発とTypeScript
brn
7
3k
React-Springでリッチなアニメーション
brn
1
780
Other Decks in Programming
See All in Programming
残高管理から台帳サービスへの進化
artoy
1
190
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
370
mrbgem 三角測量 開発
ogom
0
240
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
250
Workers Cache を知る
syumai
0
350
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
110
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
140
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
Event is what happens
moro
1
110
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
22
22k
Featured
See All Featured
Design in an AI World
tapps
1
350
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
300
Building AI with AI
inesmontani
PRO
1
1.3k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Are puppies a ranking factor?
jonoalderson
2
4k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
Ruling the World: When Life Gets Gamed
codingconduct
0
400
The Curse of the Amulet
leimatthew05
3
15k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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
׀ ׀幠 幠耮 耮֮ ֮ ָ ָה הֲ ֲ׀ ׀ׂ
ְׂ ְת ת׃ ׃