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
770
うらがみさんアドバイス解析〜リテラルは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
0
40
シリコンバレーのチームで経験したふりかえり - 共通点とギャップ / retrospectives in silicon valley
ihcomega56
5
1.7k
「サプライチェーン攻撃」に立ち向かう!SBOMを使った脆弱性管理がもたらす品質とスピード向上
ihcomega56
2
2.2k
アプリケーション開発者目線で語る、明日から始めるDevSecOps
ihcomega56
0
130
パターンマッチングを学んで新しいJavaの世界へ!Java 18までの目玉機能をおさらいしよう / Java 18 pattern matching
ihcomega56
3
1.2k
SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and Docker workshop
ihcomega56
1
220
JFrogのDevOps Platformづくりを支えるオブザーバビリティ / JFrog Observability
ihcomega56
0
420
SBOMでソフトウェアを守れ!10年後も自信を持ってリリースするために今始めるDevSecOps / DevSecOps with SBOM for yourself 10 years from now
ihcomega56
1
5.7k
Javaアプリケーションの アーティファクト管理と DevSecOps / Java artifacts management and DevSecOps
ihcomega56
0
2.4k
Other Decks in Technology
See All in Technology
入門 バックアップ
ryuichi1208
18
7.1k
Oracle Database 23ai 新機能#4 Application Continuity
oracle4engineer
PRO
0
130
Vespaを利用したテクいベクトル検索
szdr
2
190
エンジニア向け会社紹介資料
caddi_eng
14
270k
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
1.5k
怖くないオフライン機能開発 〜基本的な技術で実現する現場向けオフライン機能 / Developing offline functions without fear ~ Offline functions for the field realized with basic technology
kaminashi
1
110
不要なリソースを自動で定期的に整理する方法 ~Sandboxアカウントのコストを削減しよう!~
amixedcolor
3
120
エムスリー全チーム紹介資料 / Introduction of M3 All Teams
m3_engineering
1
320
Graph Database と Generative AI の素敵な関係
oracle4engineer
PRO
9
1.7k
tenntennはなんでnewmoにnew社したの? - YAPC::Hakodate 2024
tenntenn
PRO
0
310
New Relicを活用したシステム監視の強化とオブザーバビリティ向上
sugoto911
1
110
軽いノリで"自動化"に取り組んではいけないという話
tetsuyaooooo
1
600
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
131
8.9k
A Tale of Four Properties
chriscoyier
156
22k
Six Lessons from altMBA
skipperchong
26
3.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Testing 201, or: Great Expectations
jmmastey
38
7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
1
310
Ruby is Unlike a Banana
tanoku
96
11k
How GitHub (no longer) Works
holman
311
140k
The Brand Is Dead. Long Live the Brand.
mthomps
53
38k
Infographics Made Easy
chrislema
239
18k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
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ϓʔϧର֎ʂ
͠ΐʔͳ͍ͭͿ͖͕ɾɾɾ
ײ ίʔυॻ͍͙ͯ֬͢ೝͰ͖Δͷ͍͢͝ʂ ࣌ΫιΈ͍ͨͳπΠʔτͨͭ͠Γ͚ͩͬͨͲ Ԟ͕ਂ͔ͬͨʂ ଞਓͷ᧓Ͱ૬ΛͱͬͨΈ͍ͨͳʹͳ͚ͬͨͲ ͜ΕΛࣗͰग़དྷΔΑ͏ʹͳΒͳ͍ͱͳΜͩʂ
·ͱΊ ͍ͭ͋Γ͕ͱ͏͍͟͝·͢
͓ྱ ΞϙύΠম͍͖ͯͨͧ ͔ͩΒ࣌ؒͳͯ͘ ίʔυҰ෦͔͑͠Μ͔ͬͨ