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
ECMAScriptの視点で見るWeakRefの“正しい”使い方
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
uhyo
December 09, 2019
Programming
690
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ECMAScriptの視点で見る WeakRefの“正しい”使い方
Ginza.js#7のLTです。
uhyo
December 09, 2019
More Decks by uhyo
See All by uhyo
AIのReact習熟度を測る
uhyo
2
660
React、まだ楽しくて草
uhyo
7
4.4k
TypeScript 7.0の現在地と備え方
uhyo
6
3.4k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
20
9.8k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
88
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.1k
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
3
900
TypeScript 6.0で非推奨化されるオプションたち
uhyo
18
8.3k
Claude Code 10連ガチャ
uhyo
4
1.1k
Other Decks in Programming
See All in Programming
AIで効率化できた業務・日常
ochtum
0
140
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
150
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.4k
ふつうのFeature Flag実践入門
irof
8
4.1k
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
400
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
250
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
160
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
New "Type" system on PicoRuby
pocke
1
980
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.3k
The NotImplementedError Problem in Ruby
koic
1
850
Featured
See All Featured
Leo the Paperboy
mayatellez
7
1.8k
Designing Powerful Visuals for Engaging Learning
tmiket
1
420
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
BBQ
matthewcrist
89
10k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
We Are The Robots
honzajavorek
0
250
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Transcript
&$."4DSJQUך鋔挿ד鋅 8FBL3FGךˑ姻׃ְ˒⢪ְ倯 (JO[BKT!VIZP@
荈䊹稱➜ ؿٗٝزؒٝسؒٝآص،!-*/&吳䒭⠓爡 +BWB4DSJQU娖䎃ְֻ 2JJUB蔓➂&$."4DSJQUةؚDPOUSJCVUJPO侧⡘ չ+BWB4DSJQUך \^椚鍑ׅպ չ➙ַד鷄ְאֽ
+BWB4DSJQUךչ垥彊ٓ؎ـٓٔպ㷕עպ չ+BWB4DSJQUח䱰欽ֲׁז0QUJPOBM$IBJOJOH➙ׁ䗡䎿鍑铡պ זו !VIZP@
!VIZP@ 5BCMFPG$POUFOUT 8FBL3FGך䗁统 &$."4DSJQUהؖك٦آ؝ؙٖءّٝךꟼ⤘ 8FBL3FGכ➬圫חוך״ֲח剅ַךַ 8FBL3FGָ䧮ղח♷ִ⥂鏾כ⡦ַ
!VIZP@ 8FBL3FGך䗁统 4UBHFفٗه٦ؠٕ 8FBL3FGؔـآؙؑزפך䓲撑⡲䧭דֹװא 'JOBMJ[BUJPO(SPVQؔـآؙؑزָؖك٦آ؝ؙٖز ׁ؝٦ٕغحؙㄎדֻװא ˟DG8FBL3FG+BWB4DSJQUח䓲撑ָװגֻאְדח'JOBMJ[BUJPO 2JJUB 㹑⠗
!VIZP@ 8FBL3FGך⢽ const ref = new WeakRef(new ArrayBuffer(1024 ** 3));
console.log(ref.deref()); // ArrayBuffer setTimeout(()=> { gc(); console.log(ref.deref()); // undefined }, 100); new WeakRef ⦼ ד⦼פך䓲撑⡲䧭 䓲撑ך⚥魦כderef ًاحسד铣 ($ח״ג䓲撑ָ ⥂䭯ׅؔـآؙؑز ָ嶊ִ
!VIZP@ 8FBL3FGך⢽嶊ִזְ㜥さ const buf = new ArrayBuffer(1024 ** 3); const
ref = new WeakRef(buf); console.log(ref.deref()); // ArrayBuffer console.log(ref.deref() === buf); // true setTimeout(()=> { gc(); console.log(ref.deref()); // ArrayBuffer console.log(buf.byteLength); // 1073741824 }, 100); 㢌侧CVGח⦼Ⰵ 䓲ֻזְ撑 䓲撑ך⚥魦כ 床׃⦼הずׄ ($䖓嶊ִגְזְ 㢌侧buf鸐ׄג⦼ח ،ؙإأ〳腉זךד
!VIZP@ 'JOBMJ[BUJPO(SPVQך⢽ const group = new FinalizationGroup( iterator => console.log([...iterator]));
let obj = new ArrayBuffer(1024 ** 3); group.register(obj, 'דְַر٦ة’); obj = null; gc(); // [‘דְַر٦ة’] ה邌爙ׁ ؔـآؙؑزָ($ׁ הֹחㄎעꟼ侧床ׅ 'JOBMJ[BUJPO(SPVQך 湊鋔㼎韋ח obj鷄⸇ objפך撑嶊ׅ objָ($〳腉חז objָ($ׁג؝٦ٕ غحָؙㄎל
&$."4DSJQUה($
!VIZP@ &$."4DSJQUה($ 2הֿדծ+4ך鎉铂➬圫&$."4DSJQUדכ ($כֿתדוֲ䪔גְך ˟&$."4DSJQU +BWB4DSJQUך鎉铂➬圫㹀㕂ꥷ鋉呓կ չ+BWB4DSJQUպהչ&$."4DSJQUպך麩ְחכ长铡ָ֮ծ娖〷涸穗箮דせָ麩ֲֽד䊴殯כ זְהְֲךָ涪邌罏ך䭯锷կ
!VIZP@ &$."4DSJQUה($ 2הֿדծ+4ך鎉铂➬圫&$."4DSJQUדכ ($כֿתדוֲ䪔גְך " ⡦㹀纏ׁגְתׇד׃ ˟8FBL.BQך眍ח׳הֽ($פך鎉⿹ָָ֮/05&玎䏝 ˟&$."4DSJQU +BWB4DSJQUך鎉铂➬圫㹀㕂ꥷ鋉呓կ չ+BWB4DSJQUպהչ&$."4DSJQUպך麩ְחכ长铡ָ֮ծ娖〷涸穗箮דせָ麩ֲֽד䊴殯כ
זְהְֲךָ涪邌罏ך䭯锷կ
!VIZP@ &$."4DSJQUה($ 2ז⡦㹀纏ׁגְזַך " ($כفؚٗٓيך䮙⹛חⰋֻ䕦갟⿹רׁזְַ ($כⳢ椚禸ח״剑黝⻉חֺׅזְ湡涸ًٌٔ⢪欽ꆀ幾 剑黝⻉דفؚٗٓيך䮙⹛ָ㢌ץֹדכזְ ˟($ָ䮠תְׇדفؚٗٓيךػؿؓ٦وٝأָ衅ַׅ׃זְָծ ػؿؓ٦وٝأכ鎉铂➬圫ד⥂鏾ׁגְזְךד➙㔐כ莆ז׃
!VIZP@ 8FBL3FGך&$."4DSJQUפך䕦갟 2ד8FBL3FGכفؚٗٓيך䮙⹛ח䕦갟ׅ״י
!VIZP@ 8FBL3FGך&$."4DSJQUפך䕦갟 2ד8FBL3FGכفؚٗٓيך䮙⹛ח䕦갟ׅ״י " ֲדׅי אְח&$."4DSJQUחؖك٦آ؝ؙٖءّٝך嚊䙀ָ
!VIZP@ 8FBL3FG➬圫ח鋅($ IUUQTUDFTQSPQPTBMXFBLSFGT ״䒷欽
!VIZP@ 8FBL3FG➬圫ח鋅($ ˑֿך➬圫כؖك٦آ؝ؙٖءّٝח㼎׃ג⡦ך⥂鏾遤זְ˒ IUUQTUDFTQSPQPTBMXFBLSFGT ״䒷欽
!VIZP@ ؖك٦آ؝ؙٖءّٝך➬圫♳ך㹀纏 Ⳣ椚禸כ⟣䠐ךة؎ىؚٝדˑMJWFדזְ˒ؔـآؙؑز8FBL3FGַ 嶊׃ג葺ְ⥂鏾כ搀ְ宕黅ח嶊ׁזְ〳腉䚍֮ • ˑMJWFדזְ˒ؔـآؙؑزؖك٦آ؝ؙٖءّٝך㼎韋ח ז䖤ؔـآؙؑزך䬄韋涸ז邌植
!VIZP@ MJWFזؔـآؙؑزך㹀纏 㼛勻涸ח8FBL3FG⟃㢩ך䩛媮דفؚٗٓيַ錁庠 ֿׁה ךזְؔـآؙؑز
!VIZP@ MJWFזؔـآؙؑزך㹀纏 㼛勻涸ח8FBL3FG⟃㢩ך䩛媮דفؚٗٓيַ錁庠 ֿׁה ךזְؔـآؙؑز 錁庠הכ!!!!!!!!!! ˟הׯה׃㹀纏ח׃״ֲהְֲ陽锷כ֮תׅ
תה
!VIZP@ ➬圫חֶֽ8FBL3FGך⥂鏾 ($ָ饯ֿ⥂鏾כ搀ְⳢ椚禸⣛㶷 ($㼎韋הזؔـآؙؑزך⿑㺘ז㹀纏Ⳣ椚禸⣛㶷 ׃8FBL3FGכ⥂鏾幾ׅ չفؚٗٓيָ⥂䭯ׅؔـآؙؑزכ($ׁזְպהְֲ⥂鏾PQUPVU〳腉
!VIZP@ 8FBL3FGך䠐纏 8FBL3FGכ⥂鏾幾ׅ Ⳣ椚禸ךⵖ秈ָ幾 剑黝⻉ך堣⠓ָ㟓⸇ Ⱗ⡤涸חכًٌٔך⢪欽ꆀ幾
!VIZP@ תה 8FBL3FGכ剑黝⻉ָך㈓♧ך㶷㖈䠐纏ד֮ծ ➭ך湡涸ד⢪ֲךכ⡦ַָ呎劤涸חֶַ׃ְךד 罋ִ湫׃ת׃׳ֲ 'JOBMJ[BUJPO(SPVQず圫