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
ARC vs. GC?ARC in GC?
Search
Shigure Shimotori
September 16, 2017
Programming
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ARC vs. GC?ARC in GC?
https://iosdc.jp/2017/node/1349
Shigure Shimotori
September 16, 2017
More Decks by Shigure Shimotori
See All by Shigure Shimotori
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
190
AsyncSequenceとAsyncStreamのプロポーザルを全部読む!!
s_shimotori
1
520
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
450
おっと、お飲みごろの時間です!
s_shimotori
1
180
Synchronizationを支える技術
s_shimotori
1
340
1人で挑むSwiftコンパイラ 〜型システム入門編〜
s_shimotori
0
1.5k
英語
s_shimotori
1
1.3k
Parallel Socket Communication in Swift
s_shimotori
1
1k
UIColor Anatomy
s_shimotori
1
3.1k
Other Decks in Programming
See All in Programming
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3k
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.1k
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
540
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
160
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
250
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
520
Building an Out-of-Order CPU
latte72
1
790
Security issues being discussed on Web Platforms
petamoriken
0
1k
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
130
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Tell your own story through comics
letsgokoyo
1
1.1k
Leo the Paperboy
mayatellez
10
2.3k
A designer walks into a library…
pauljervisheath
211
25k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
470
The Spectacular Lies of Maps
axbom
PRO
1
1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.1k
Transcript
iOSDC JAPAN 2017 #1349 ARC vs. GCʁARC in GCʁ @S_Shimotori
ͩΕʁ • @S_Shimotori / @S_Shimotori_pub • ϞϥτϦΞϜ ֶੜ • Swift͕͖ͳͷͰSwiftΛॻ͍͍ͯ·͢
• SPMΛͬͨΓiOSΛͬͨΓ͠·͢
ARC vs. GC ʘŲōŘŕ!!ʗ
ਓྨARCͱGCΛൺֱ͕ͪ͠ • GCΛΊͯARCʹ͠·͢ - Apple Guides and Sample Code[1] •
ARCͱGCͷҧ͍ͬͯͳʹ - Stack Overflow[2] • ARC͔ΒGCʹม͑ͨ΄͏͕͍͍Μ͡Όͳ͍ͷ - Swift evolution[3] [1] https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html [2] https://stackoverflow.com/questions/7874342/what-is-the-difference-between-objective-c-automatic-reference-counting-and-garb [3] https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160208/009403.html 4
• ͋ͷJVM͕࠾༻ͨ͠ϝϞϦཧํ๏ • ώʔϓྖҬΛෳ(youngྖҬͱoldྖҬͳͲ)ʹ͚ͯ͏ • youngྖҬ͔Βॱ൪ʹ͍ͬͯ͘ • શྖҬΛ͍ͬͨ࣌ͷϑϧGC͕ා͍ • JVMʹΨϕʔδίϨΫλ͕ෳ༻ҙ͞Ε͍ͯΔ
• ༻్ʹ߹ͬͨΞϧΰϦζϜͷͷΛ͏ ΈΜͳେ͖ʮΨϕʔδίϨΫγϣϯʯ 5 ͦΕΛGCͬͯݴ͍͍ͬͯͷʁʁ ❌
͜Ε͕ຊͷΨϕʔδίϨΫγϣϯʂ • ࣗಈͰෆཁͳΦϒδΣΫτΛ୳͠ϝϞϦΛղ์͢Δ • ϝϞϦղ์ͷλΠϛϯάΛߟ͑ͳͯ͘Α͍ • ͍ͭͰʹϝϞϦྖҬΛཧ͢Δ͜ͱ͋Δ • ํ๏ͷҟͳΔ3छͷΨϕʔδίϨΫλ͕͋Δ •
ࢀরΧϯτ • ϚʔΫΞϯυεΠʔϓ • ίϐʔGC • ୯ʹGCͱݺΜͩ߹τϨʔγϯάίϨΫλΛࢦ͢ • JVMͷGCτϨʔγϯάίϨΫλͷҰछ(ੈผGC) } τϨʔγϯάίϨΫλ 6
ARCGCͱରཱ͢Δ͠ GCͷҰछͰ͋Δ
ͱ͜ΖͰɼ
Cyclone/Rustͷ ॴ༗ݖϞσϧɼ ਅࣅͪ͠Ό͓͏
࠾༻͍ͯ͠ΔϝϞϦཧํ๏Ͱ ͬ͘͟Γ Θ͚ͯΈͨ खಈ C ಈతࣗಈ (ٛͷGC) ࢀরΧϯτ τϨʔγϯάίϨΫλ(ڱٛͷGC) Swift/ObjC
Java Ruby D ※ݴޠࣗʹGC͕ͳ͍ͷͰϥΠϒϥϦ͕࡞ΒΕ͍ͯΔ͜ͱ͕͋Δɽ ※ओʹ͍ͬͯΔํ๏ͷΈͰ͚ͨͷͰʮͬ͘͟ΓʯɽCycloneGCΛ෦తʹ͍ͬͯΔ͠ɼJava੩తղੳΛ͍ͯ͠Δɽ OCaml .NET C++ LISP Pascal ੩తࣗಈ 10 Cyclone Python Rust
CycloneͱRust ϝϞϦཧͷେઌഐʂ
·ͱΊ
·ͱΊ • ARCGCͱൺֱ͞ΕΔ͠ɼGCͷҰһͰ͋Δ • ٛͷGCͱڱٛͷGCͰࢦ͍ͯ͠Δͷ͕ҧ͏ • CycloneRustϝϞϦཧʹऔΓΜͰ͖ͨେઌഐ • ઌഐݴޠͷऔΓΈ͕ͱͯࢀߟʹͳΔ͔ 13
͓͠·͍ʂ
ࢀߟจݙ • ΨϕʔδίϨΫγϣϯͱͳΜͧɽ • ൧ݟʰΨϕʔδίϨΫγϣϯͷ࣮๏ͱධՁʱ<http://www.net.c.dendai.ac.jp/~takumi/>ɼ(ࢀর2017-09-11)ɽ • ԕ౻හʮҰൠڭཆͱͯ͠ͷGarbage Collection (ίϯύΠϥԋश൪֎ฤ)ʯ<http://matsu-www.is.titech.ac.jp/~endo/gc/gc.pdf>ɼ(ࢀর2017-09-11)ɽ •
ΑͦͷݴޠͰͷϝϞϦཧઓུ • Scott Oaksஶ(2015)ʰJavaύϑΥʔϚϯεʱ૱༁ɼגࣜձࣾΦϥΠϦʔɾδϟύϯɽ • ੨ๆʰRubyιʔείʔυશղઆʱ<http://loveruby.net/ja/rhg/book/>ɼ(ࢀর2017-09-11)ɽ • OCamlʰΨϕʔδίϨΫγϣϯ – OCamlʱ<https://ocaml.org/learn/tutorials/garbage_collection.ja.html>ɼ(ࢀর2017-09-11)ɽ • MicrosoftʰGarbage Collectionʱ<https://msdn.microsoft.com/ja-jp/library/0xy59wtx(v=vs.110).aspx>ɼ(ࢀর2017-09-11)ɽ • Jeffrey Richterஶ(2013)ʰϓϩάϥϛϯά .NET Framework ୈ4൛ʱ౻ݪ༤հ༁ɼܦBPࣾɽ • Digital MarsʰΨϕʔδίϨΫγϣϯ - ϓϩάϥϛϯάݴޠ D (ຊޠ༁)ʱ<http://www.kmonos.net/alang/d/garbage.html>ɼ(ࢀর2017-09-11)ɽ • naruseʰRuby 2.2.0 ϦϦʔεʱ<https://www.ruby-lang.org/ja/news/2014/12/25/ruby-2-2-0-released/>ɼ(ࢀর2017-09-11)ɽ • CycloneʰCyclone: User Manualʱ<http://cyclone.thelanguage.org/wiki/User%20Manual/>ɼ(ࢀর2017-09-12)ɽ • Robert C. Seacordஶ(2014)ʰC/C++ηΩϡΞίʔσΟϯά ୈ2൛ʱՎਖ਼΄͔༁ɼגࣜձࣾKADOKAWAɽ • Richard Reeseஶ(2013)ʰৄઆ CϙΠϯλʱ٠জ༁ɼגࣜձࣾΦϥΠϦʔɾδϟύϯɽ • Pythonʰcpython/gcmodule.c at 2ebc5ce42a8a9e047e790aefbf9a94811569b2b6 · python/cpythonʱ<https://github.com/python/cpython/blob/ 2ebc5ce42a8a9e047e790aefbf9a94811569b2b6/Modules/gcmodule.c>ɼ(ࢀর2017-09-13)ɽ • Neil SchemenauerʰGarbage Collection for Pythonʱɼ(ࢀর2017-09-13)ɽ
ࢀߟจݙ • Swiftͷߦ͍͔͘ʹɽ • Appleʰswift/OwnershipManifesto.md at fa2f2bd4577e536130f9298fabfd2960a357693c · apple/swiftʱ<https://github.com/apple/swift/blob/ fa2f2bd4577e536130f9298fabfd2960a357693c/docs/OwnershipManifesto.md>ɼ(ࢀর2017-09-11)ɽ
• Appleʰswift-evolution/0176-enforce-exclusive-access-to-memory.md at b9d815099453912069998b579948a3319246042b · apple/swift-evolutionʱ<https:// github.com/apple/swift-evolution/blob/b9d815099453912069998b579948a3319246042b/proposals/0176-enforce-exclusive-access-to-memory.md>ɼ(ࢀর 2017-09-11)ɽ • Appleʰ [swift-evolution] RFC: Preventing Retain Cycles (Memory Ownership Model)ʱ<https://lists.swift.org/pipermail/swift-evolution/Week-of- Mon-20160725/025695.html>ɼ(ࢀর2017-09-12)ɽ • ૉࡐ • TopeconHeroesʰਧ͖ग़͠ૉࡐઐαΠτʮϑΩμγσβΠϯʯʱ<http://fukidesign.com/>ɼ(ࢀর2017-09-11)ɽ
εϥΠυʹࡌͤͳ͔͚ͬͨͩͲಡΜͩΒ໘ന͍͔ • ͬͱGCΛษڧ͢Δ • ౦ژେֶใՊֶՊʰIndex of Compiler Resumeʱ<http://www.is.s.u-tokyo.ac.jp/vu/jugyo/processor/process/soft/compilerresume/index.html>ɼ(ࢀর2017-09-16)ɽ • ాӜ
݈࣍࿕ʮϓϩάϥϛϯάݴޠ 6 ΨϕʔδίϨΫγϣϯ(2)ʯ<https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/programming_languages/gen/slides/pdf/06-gc- adv.pdf>ɼ(ࢀর2017-09-16)ɽ • ੈͷதʹ·ͩͨ͘͞Μͷݴޠ͕͋Δ • garicchiʰComponent Object Model(COM)ͱԿ͔ ·ͱΊΔ – garicchi.comʱ<http://garicchi.com/?p=19259>ɼ(ࢀর2017-09-13)ɽ • தౡେҰʰGolangͷGCΛ͏ | SOTAʱ<http://deeeet.com/writing/2016/05/08/gogc-2016/>ɼ(ࢀর2017-09-11)ɽ • ຊ༟لʰPerlͷΨʔϕοδίϨΫγϣϯ(GC)ͷಛੑʹ͍ͭͯ - PerlͳΒαϯϓϧίʔυPerlೖʱ<http://d.hatena.ne.jp/perlcodesample/20131010/1381413409>ɼ(ࢀর 2017-09-11)ɽ • ຊ༟لʰʮϦϑΝϨϯεΧϯτࣜͷGCʯɺITքͰGCͱೝࣝ͞Ε͍ͯͳ͍ͷͩΖ͏͔? - Qiitaʱ<http://qiita.com/yukikimoto/items/3964b107107cc52f8f51>ɼ(ࢀর 2017-09-11)ɽ • ʰΨʔϕδίϨΫγϣϯ - ݴޠผGCͷΈ(31402)ʛteratailʱ<https://teratail.com/questions/31402>ɼ(ࢀর2017-09-12)ɽ • SwiftͲ͏ͳΔͷ • খক೭ʰSwift 3ͷ։ൃͷৼΓฦΓͱSwift 4ͷܭը͕ه͞Εͨϝʔϧͷհ - Qiitaʱ<http://qiita.com/mono0926/items/c51b74fae679e1e39d2b>ɼ(ࢀর2017-09-12)ɽ • দؗେًʰSwift5ͷ͕ٞελʔτ:ABIͷ҆ఆԽɺฒߦॲཧɺݴޠͷਐԽϓϩηεͷมߋ – Daiki Matsudate – Mediumʱ<https://medium.com/@d_date/ swift5%E3%81%AE%E8%AD%B0%E8%AB%96%E3%81%8C%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88- abi%E3%81%AE%E5%AE%89%E5%AE%9A%E5%8C%96-%E4%B8%A6%E8%A1%8C%E5%87%A6%E7%90%86- %E8%A8%80%E8%AA%9E%E3%81%AE%E9%80%B2%E5%8C%96%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E5%A4%89%E6%9B%B4-6b6540 acd6e4>ɼ(ࢀর2017-09-12)ɽ