うらがみさんアドバイス解析〜リテラルはGCされない〜 #hogedriven
この前関西のエンジニアおともだちと集まって遊んだ時に発表した資料を公開しちゃお〜
何かと言うとですね。
かなり昔だけど、ふと浮かんだ疑問をツイートしたら
うらがみ(@backpaper0)さんがコード書いて実験してくれて。
それを今更解析したよ〜ってことで発表して、内容合ってるか皆さんに見ていただいたの!
資料だけだと分かりづらいかもしれんけど、すごく勉強になったし面白かった。
うらがみさんへのお礼としてアップルパイも焼いていい経験になったよー!
ツイート↓
よし。
— よこな / Ayana (@ihcomega) November 10, 2014
String s = new String("うわぁ");
って書いちゃった時
newで生成される方じゃなくて"うわぁ"の方のStringオブジェクト(何て説明したらいいのか、リテラルの方)は、
どこからも参照されていないからすぐ(?優先的に)GCの対象になる。
ですか?
コード by うらがみさん↓
gist.github.com
この作業で生じたTODO
- コンスタントプールについて勉強する…というかjavapを学ぶ
- コードの後半も読んでみる
最後に、資料には書いてない感想を追加しておこう。
こうやって有識者の方に教えていただく内容って結構難しいけど、
ちゃんと考えれば理解できるし、何となく分かったで放置せず向き合っていきたいなー