「わかる!JavaVM ― 2時間でわかる?JavaVM入門」へ行ってきた
面白かったー。
で、ブログを書くまでが勉強会らしいので、とりいそぎ、gdgdなメモを貼っておきます。
要約ではなく、チラ裏的なアレですので、ご了承ください。
クラスローダーについて(ashigeruさん)
ロード処理のこと。
- 親jarのバージョンが古いとそっちを見ちゃってヤバイ
- ライブラリの衝突をパッケージ名変更で乗り切るとかの話
定義ローダのこと。
- 親が違うとClassNotFound
- 定義ローダが違うとキャストしたとき問題がでるよ
- ドッペルゲンガーは親から探すと起きないよ
リローディング技術のこと。
- 親からクラスファイルのバイナリをパクってくる
- リローディング用のクラスローダで定義する
- しかし全部やると大変なので、通常はパッケージを絞る
- langの中とかはできないらしい
- 自分で実装するとハマるので、既存のものを使うか、よくよく理解して使うこと
アンロードのこと。
- アンロードはメモリ効率を良くするためにある
- クラスローダが回収されるまでクラスはアンロードされない
- アンロードしたければ、クラスローダを定期的に消してあげる必要がある
スタックモデルについて(さくらばさん)
# 資料はFlashで作られていたらしい。すごいなぁ。
- マカロンがすごぉくおいしそう
- Javaスタックにはスレッドカウンタが入ってる
- メソッドが呼ばれたらフレームが入る
- エリアにスタック作れなくなるのが、OutOfMemomry!
- スタックにフレームがふれるのが、StackOverflow!
- Java6.12くらいから、オペランドスタックにインスタンスを作れるようになりました。
- なにそれすごい。知らなかった
- Escape Analysis
- フレームから出て行かない(参照渡しとかしない)ことを見張っている子
- javap -c でバイトコード見るとフレーム作ってるところが見られる
「わかる!Javaバイトコード」(kmizuさん)
プログラミング言語としてのJavaバイトコードの説明とのことで、バイトコードの言語仕様をご紹介くださいました。
特に面白かったお話。
以下、ほげほげ。
- カテゴリってなんだっけ?
- 符号拡張がよくわからない。
- 明示的なキャストならできるんかナァ
- ワイドニング/ナローイングのi2なんとかとかの2って、つまり、toか
- バイトコードの仕様の実装見たい。面白そう
LT: クラスローダリークパターン(nekopさん)
ほとんどわかりませんでした。吊ってくる。
「クラスローダに入れた値はスレッドから強参照される。こーどよむ」しかメモしてないや。何読めばいいんだっけ。
ありがとうございましたっ
主催のyuroyoroさん、懇親会幹事のyamashiroさん、発表者の皆様、懇親会でお話ししてくださった皆様、ありがとうございました。会場提供くださったオラクルさんも、ありがとうございました。
花金に相応しい素晴らしい濃度のイベントでした。楽しかったです。
(余談)
「OAuthをライブラリ使わずに実装しる」というナゾのメモが、ケータイに残っていました。新しい言語を習得する勉強に、そこそこ適しているそうです。懇親会で、教えてもらいました。