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
Baseline対応のDOMの型定義を作った
uhyo
3
770
AIのReact習熟度を測る
uhyo
2
830
React、まだ楽しくて草
uhyo
7
4.6k
TypeScript 7.0の現在地と備え方
uhyo
6
3.6k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
20
10k
型定義でAIと会話する:型を通じてAIに意図を伝えるテクニック
uhyo
1
97
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
3
1.1k
ECMAScript仕様の最新動向: プロセスの変化と仕様のトレンド
uhyo
3
920
TypeScript 6.0で非推奨化されるオプションたち
uhyo
18
8.4k
Other Decks in Programming
See All in Programming
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
110
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
どこまでゆるくて許されるのか
tk3fftk
0
500
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.7k
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
140
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
320
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
220
共通化で考えるべきは、実装より公開する型だった
codeegg
0
250
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
140
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
How to Talk to Developers About Accessibility
jct
2
400
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
280
Speed Design
sergeychernyshev
33
1.9k
Scaling GitHub
holman
464
140k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
The SEO Collaboration Effect
kristinabergwall1
1
510
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
460
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ず圫