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
うらがみさんアドバイス解析〜リテラルはGCされない〜
Search
ihcomega56
August 27, 2016
Technology
0
800
うらがみさんアドバイス解析〜リテラルはGCされない〜
真夏のhoge勉強会2016
ihcomega56
August 27, 2016
Tweet
Share
More Decks by ihcomega56
See All by ihcomega56
JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview)
ihcomega56
1
120
シリコンバレーのチームで経験したふりかえり - 共通点とギャップ / retrospectives in silicon valley
ihcomega56
5
1.9k
「サプライチェーン攻撃」に立ち向かう!SBOMを使った脆弱性管理がもたらす品質とスピード向上
ihcomega56
2
2.5k
アプリケーション開発者目線で語る、明日から始めるDevSecOps
ihcomega56
0
200
パターンマッチングを学んで新しいJavaの世界へ!Java 18までの目玉機能をおさらいしよう / Java 18 pattern matching
ihcomega56
3
1.4k
SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and Docker workshop
ihcomega56
1
290
JFrogのDevOps Platformづくりを支えるオブザーバビリティ / JFrog Observability
ihcomega56
0
490
SBOMでソフトウェアを守れ!10年後も自信を持ってリリースするために今始めるDevSecOps / DevSecOps with SBOM for yourself 10 years from now
ihcomega56
1
6.3k
Javaアプリケーションの アーティファクト管理と DevSecOps / Java artifacts management and DevSecOps
ihcomega56
0
2.6k
Other Decks in Technology
See All in Technology
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
470
人工衛星のファームウェアをRustで書く理由
koba789
15
8.2k
機械学習を扱うプラットフォーム開発と運用事例
lycorptech_jp
PRO
0
590
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
250
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
730
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
450
データ分析エージェント Socrates の育て方
na0
5
1.5k
これでもう迷わない!Jetpack Composeの書き方実践ガイド
zozotech
PRO
0
1k
新アイテムをどう使っていくか?みんなであーだこーだ言ってみよう / 20250911-rpi-jam-tokyo
akkiesoft
0
320
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
480
Apache Spark もくもく会
taka_aki
0
120
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
110
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
How STYLIGHT went responsive
nonsquared
100
5.8k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Faster Mobile Websites
deanohume
309
31k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
850
How to train your dragon (web standard)
notwaldorf
96
6.2k
Bash Introduction
62gerente
615
210k
Transcript
͏Β͕Έ͞Μͷ ΞυόΠεղੳୈ
͏Β͕Έ͞Μͱ͍͑ ઌੜͷΑ͏ͳଘࡏʂ
͏Β͕Έ͞Μͱ͍͑
࠷ۙͩͱ DBTFDMBTTͷ ·ͩΑ͘Θ͔ͬͯͳ͍ GMBU.BQͷJNQMJDJUDPOWFSUFS ݁ߏΘ͔ͬͨ ˞4DBMB
ಛ /PUPOMZઆ໌ #VUBMTPίʔυ
ࠓ ੲ͍͍ͨͩͨίʔυΛ ͣͬͱ์ஔ͔ͯ͠Βͣʹ͍ͨͷͰ ࠓߋղੳͨ͠
࣌ ύʔϑΣΫτ+BWB
ٙ
ղ
͏Β͕Έ͞ΜʹΑΔ࣮ݧ IUUQTHJTUHJUIVCDPNCBDLQBQFSEBGFGGFCF
༰ wϦςϥϧ wOFXͨͭ͠ wJOUFSOͨͭ͠ wϦςϥϧͦͷ wϦςϥϧͦͷͷΫϥεϩʔμʔ wϦςϥϧͦͷͷΫϥε wϦςϥϧͦͷͷϑΟʔϧυ ($͞ΕΔͷ͔ʁ
༰ wϦςϥϧ wOFXͨͭ͠ wJOUFSOͨͭ͠ wϦςϥϧͦͷ wϦςϥϧͦͷͷΫϥεϩʔμʔ wϦςϥϧͦͷͷΫϥε wϦςϥϧͦͷͷϑΟʔϧυ ͜͜ͷ෦Λͬͨ
ݴ͍༁ શ෦ग़དྷͳ͔ͬͨͷʹཧ༝͕ ޙड़
͍ͬͯΈΑ͏ wϦςϥϧ wOFXͨͭ͠ wJOUFSOͨͭ͠
ͦͦ JOUFSOͬͯͳΜ͚ͩͬ
JOUFSOϝιου͕ݺͼग़͞Εͨͱ͖ʹɺFRVBMT 0CKFDU ϝιο υʹΑͬͯ͜ͷ4USJOHΦϒδΣΫτʹ͍͠ͱఆ͞ΕΔจࣈ ྻ͕ϓʔϧʹ͢Ͱʹ͋ͬͨ߹ɺϓʔϧͷ֘͢Δจࣈྻ ͕ฦ͞Ε·͢ɻ ͦ͏Ͱͳ͍߹ɺ͜ͷ4USJOHΦϒδΣΫτ͕ϓʔϧʹՃ͞ Εɺ͜ͷ4USJOHΦϒδΣΫτͷࢀর͕ฦ͞Ε·͢ɻ JOUFSO +BWB%PDΑΓ
จࣈྻϦςϥϧΛએݴ͢Δͱ 4USJOHϓʔϧͬͯͱ͜ʹอ࣋͞ΕΔ ϓʔϧ
จࣈྻϦςϥϧΛએݴ͢Δʹ 4USJOHϓʔϧͷதΛ֬ೝͯ͠ ಉ͡จࣈྻ͕͋ΕͦͷࢀরΛ͍ճ͢͠ ͳ͚Ε৽͘͠࡞ͬͯอ࣋͢ΔΒ͍͠ ͱ͍͏͔
ͯ͞ ؾΛऔΓͯ͠ ίʔυղੳͩͬ ·ͣ ͭͷΠϯελϯεΛ ੜ͠Α͏
ΠϯελϯεΛੜ͢Δ wϦςϥϧ wOFXͨͭ͠ wJOUFSOͨͭ͠
ΠϯελϯεΛੜ͢Δ
ΠϯελϯεΛੜ͢Δ •”aaa” •new String(”bbb”) •new String(new char[] { ‘c’,’c’,’c’ }).intern()
Μʁ new String(new char[] { ‘c’,’c’,’c’ }).intern() DIBSʜ ϓʔϧʹՃ͢ΔλΠϛϯάΛ
JOUFSO ͕ݺͼग़͞Εͨͱ͖ OPUϦςϥϧ͕એݴ͞Εͨͱ͖ ʹ ͍͔ͨ͠Β͔ͳʁʁʁ
Μʁ new String(new char[] { ‘c’,’c’,’c’ }).intern() DIBSʜ ϓʔϧʹՃ͢ΔλΠϛϯάΛ
JOUFSO ͕ݺͼग़͞Εͨͱ͖ OPUϦςϥϧ͕એݴ͞Εͨͱ͖ ʹ ͍͔ͨ͠Β͔ͳʁʁʁ ਖ਼ղͰͨ͠ ൃදޙʹՃͨ͠εϥΠυ
ͯ͞ ؾΛऔΓͯ͠ ίʔυղੳͩͬ ࣍ ࡞ͬͨΠϯελϯε͕ ($͞ΕΔ͔֬ೝ͠Α͏
ྲྀΕ ($͞Εͯͳ͍͜ͱΛ֬ೝ͢Δ ($ͷରͱ͢Δ ͕Μͬͯ($͢Δ ($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
ྲྀΕ
($͞Εͯͳ͍͜ͱΛ֬ೝ͢Δ ($͞Εͯͳ͍͜ͱΛ֬ೝ͢Δ ($ͷରͱ͢Δ ͕Μͬͯ($͢Δ ($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
($͞Εͯͳ͍͜ͱΛ֬ೝ͢Δ
($͞Ε͔ͨ֬ೝ͢Δํ๏ ͷͪ΄Ͳɾɾɾ
($ͷରͱ͢Δ ($͞Εͯͳ͍͜ͱΛ֬ೝ͢Δ ($ͷରͱ͢Δ ͕Μͬͯ($͢Δ ($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
͜ΕͬͯΔʂ OVMMΛೖ͢ΔΜͰ͠ΐ͏ʁ
($ͷରͱ͢Δ
($ͷରͱ͢Δ
($ͷରͱ͢Δ
ڧࢀরʁ ͳΜͧ
ུ ऑࢀরΦϒδΣΫτɺͦͷऑࢀরΦϒδΣΫτͷϦϑΝ Ϩϯτ͕ϑΝΠφϥΠζՄೳʹͳΓɺϑΝΠφϥΠζ͞Εɺͦ ͯ͠࠶ੜ͞ΕΔ͜ͱΛ્ࢭ͢Δ͜ͱ͋Γ·ͤΜɻ ͋Δ࣌ͰɺΦϒδΣΫτ͕ऑ౸ୡՄೳͰ͋ΔͱɺΨϕʔδί ϨΫλ͕அͨ͠ͱ͠·͢ɻͦͷ࣌ͰɺΨϕʔδίϨΫλɺ ͦͷΦϒδΣΫτͷऑࢀরͯ͢ͱɺڧࢀর͓Αͼιϑτࢀ রͷνΣʔϯΛܦ༝ͯͦ͠ͷΦϒδΣΫτʹ౸ୡͰ͖ΔΑ͏ͳɺ ΄͔ͷऑ౸ୡՄೳͳΦϒδΣΫτͷऑࢀরͯ͢Λɺݪࢠత ʹΫϦΞ͠·͢ɻಉ࣌ʹɺΨϕʔδίϨΫλҎલʹऑ౸ୡՄ
ೳͳΦϒδΣΫτ͕ͯ͢ϑΝΠφϥΠζՄೳͰ͋Δ͜ͱΛએ ݴ͠·͢ɻಉ࣌ʹ·ͨ͋ͱͰɺΨϕʔδίϨΫλɺࢀর Ωϡʔʹొ͞Ε͍ͯΔͦΕΒͷ৽͘͠ΫϦΞ͞ΕͨऑࢀরΛ ΩϡʔʹೖΕ·͢ɻ ऑࢀর +BWB%PDΑΓ
ऑࢀর +BWB%PDΑΓ
ڧࢀরɾऑࢀর ͻͩ͠·͞ΜϖʔδΛࢀߟʹ ڧࢀরɿ ଟී௨ͷࢀরΛࢦ͢ ऑࢀরɿ ʮऑࢀরʹͯ͠อ࣋͢Δͱɺ ଞͷ௨ৗͷࢀর͕શͯແ͘ͳΕɺ ($ͷରʹͳΔʯΒ͍͠ɾɾɾ
ɾɾɾʁ ʮଞͷ௨ৗͷࢀর͕શͯແ͘ͳΕɺ ($ͷରʹͳΔʯʁ ͲͷΠϯελϯεͦ͏ͩͱࢥͬͯͨ ऑࢀর͡Όͳ͍ͷ($ͷରͰͳ͍ʁ ҧ͍͕Α͔͘Βͳ͍ͷ͚ͩͲ ऑࢀরͩͱ($ͷରͱ͍͏͜ͱ ͔֬ͬΆ͍ ࡶ
ɾɾɾʁ ऑࢀরͷ߹ ࢀর͕͋ͬͯ($ͷରʹͳΔ ͦ͏Ͱ͢ Ωϟογϡͱ͔ʹ͏Β͍͠ ൃදޙʹՃͨ͠εϥΠυ
ͯ͞ ؾΛऔΓͯ͠ ίʔυղੳͩͬ ଓ͖ʙ
($ͷରͱ͢Δ
ͭ·Γࠓ ͭͷจࣈྻ ͲΕڧࢀর͕ͳ͍ ($͞Εͦ͏ʂ
͕Μͬͯ($͢Δ ($͞Εͯͳ͍͜ͱΛ֬ೝ͢Δ ($ͷରͱ͢Δ ͕Μͬͯ($͢Δ ($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
͜Ε͔ͯ͠͠ʂ 4ZTUFNHD ͔ͳʁ
Ͱ 4ZTUFNHD ݺΜͰ ($͞ΕΔͱݶΒͳ͍ͬͯ ͬͪΌ͕ݴͬͯͨ
͕Μͬͯ($͢Δ
+BWBԾϚγϯͷۭ͖ϝϞϦʔͷྔΛฦ͠·͢ɻ HDϝιουΛݺͼग़͢ͱɺ GSFF.FNPSZʹΑͬͯฦ͞ΕΔ͕૿͑Δ߹͕͋Γ·͢ɻ 3VOUJNFGSFF.FNPSZ +BWB%PDΑΓ
͕Μͬͯ($͢Δ
($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ ($͞Εͯͳ͍͜ͱΛ֬ೝ͢Δ ($ͷରͱ͢Δ ͕Μͬͯ($͢Δ ($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
͜ͷࢀরΦϒδΣΫτ͕ɺ ϓϩάϥϜ·ͨΨϕʔδɾίϨΫλʹΑͬͯ ΩϡʔʹೖΕΒΕ͍ͯΔ͔Ͳ͏͔Λఆ͠·͢ɻ 3FGFSFODFJT&ORVFVFE +BWB%PDΑΓ
ུ ऑࢀরΦϒδΣΫτɺͦͷऑࢀরΦϒδΣΫτͷϦϑΝ Ϩϯτ͕ϑΝΠφϥΠζՄೳʹͳΓɺϑΝΠφϥΠζ͞Εɺͦ ͯ͠࠶ੜ͞ΕΔ͜ͱΛ્ࢭ͢Δ͜ͱ͋Γ·ͤΜɻ ͋Δ࣌ͰɺΦϒδΣΫτ͕ऑ౸ୡՄೳͰ͋ΔͱɺΨϕʔδί ϨΫλ͕அͨ͠ͱ͠·͢ɻͦͷ࣌ͰɺΨϕʔδίϨΫλɺ ͦͷΦϒδΣΫτͷऑࢀরͯ͢ͱɺڧࢀর͓Αͼιϑτࢀ রͷνΣʔϯΛܦ༝ͯͦ͠ͷΦϒδΣΫτʹ౸ୡͰ͖ΔΑ͏ͳɺ ΄͔ͷऑ౸ୡՄೳͳΦϒδΣΫτͷऑࢀরͯ͢Λɺݪࢠత ʹΫϦΞ͠·͢ɻಉ࣌ʹɺΨϕʔδίϨΫλҎલʹऑ౸ୡՄ
ೳͳΦϒδΣΫτ͕ͯ͢ϑΝΠφϥΠζՄೳͰ͋Δ͜ͱΛએ ݴ͠·͢ɻಉ࣌ʹ·ͨ͋ͱͰɺΨϕʔδίϨΫλɺࢀর Ωϡʔʹొ͞Ε͍ͯΔͦΕΒͷ৽͘͠ΫϦΞ͞ΕͨऑࢀরΛ ΩϡʔʹೖΕ·͢ɻ ऑࢀর +BWB%PDΑΓ
ͭ·Γ ऑࢀর ($ͷରͱͳΔ ΠϯελϯεΛ ΨϕʔδίϨΫλ͞Μ͕ݟ͚ͭΔͱ ݪࢠతʹΫϦΞ͢Δʁ($͕ى͖Δ
ͭ·Γ ͦͷΫϦΞ ($ ରʹͳͬͨऑࢀর͕ ΩϡʔʹೖΔʁ
ͭ·Γ Ωϡʔʹೖ͍ͬͯΕ ($͞ΕͨͱΈͳͯ͠0,ʁʁʁ
($͞ΕͯΔ͔Ͳ͏͔֬ೝ͢Δ
ͳ Δ ΄ Ͳ
Ϧςϥϧ($͞Εͯͳ͍Α OFXͨͭ͠($͞ΕͨΑ‷ ɾŷɾ و ̑̑ŞƄŕ JOUFSOͨͭ͠($͞ΕͨΑ‷ ɾŷɾ و ̑̑ŞƄŕ ݁Ռ
݁Ռ Ϧςϥϧ($ͷର֎ʂ 4USJOHͷΠϯελϯε ώʔϓ্ʹ͋Δͷʁ ଞͷΠϯελϯεͱಉ༷($ର͚ͩͲ 4USJOHϓʔϧର֎ʂ
͠ΐʔͳ͍ͭͿ͖͕ɾɾɾ
ײ ίʔυॻ͍͙ͯ֬͢ೝͰ͖Δͷ͍͢͝ʂ ࣌ΫιΈ͍ͨͳπΠʔτͨͭ͠Γ͚ͩͬͨͲ Ԟ͕ਂ͔ͬͨʂ ଞਓͷ᧓Ͱ૬ΛͱͬͨΈ͍ͨͳʹͳ͚ͬͨͲ ͜ΕΛࣗͰग़དྷΔΑ͏ʹͳΒͳ͍ͱͳΜͩʂ
·ͱΊ ͍ͭ͋Γ͕ͱ͏͍͟͝·͢
͓ྱ ΞϙύΠম͍͖ͯͨͧ ͔ͩΒ࣌ؒͳͯ͘ ίʔυҰ෦͔͑͠Μ͔ͬͨ