「わかる!JavaVM ― 2時間でわかる?JavaVM入門」へ行ってきた

面白かったー。

で、ブログを書くまでが勉強会らしいので、とりいそぎ、gdgdなメモを貼っておきます。

要約ではなく、チラ裏的なアレですので、ご了承ください。

クラスローダーについて(ashigeruさん)

ロード処理のこと。

  • 親jarのバージョンが古いとそっちを見ちゃってヤバイ
    • Tomcat5.5〜は、自分を先に見てからTomcatが提供してるクラスローダを見にいく
      • すなわち親の影響を受けにくい
    • OSGiは親から探す。必要なやつだけ選べる
  • ライブラリの衝突をパッケージ名変更で乗り切るとかの話

定義ローダのこと。

  • 親が違うとClassNotFound
  • 定義ローダが違うとキャストしたとき問題がでるよ
  • ドッペルゲンガーは親から探すと起きないよ

リローディング技術のこと。

  • 親からクラスファイルのバイナリをパクってくる
  • リローディング用のクラスローダで定義する
    • しかし全部やると大変なので、通常はパッケージを絞る
    • langの中とかはできないらしい
  • 自分で実装するとハマるので、既存のものを使うか、よくよく理解して使うこと

アンロードのこと。

  • アンロードはメモリ効率を良くするためにある
  • クラスローダが回収されるまでクラスはアンロードされない
  • アンロードしたければ、クラスローダを定期的に消してあげる必要がある

スタックモデルについて(さくらばさん)

# 資料はFlashで作られていたらしい。すごいなぁ。

  • 逆ポーランドみたいにスタックで(つまりLIFOで)VMは計算している
  • いろいろかいてもjavacがスタック演算に大体変換している
  • Javaスタックにはスレッドカウンタが入ってる
  • メソッドが呼ばれたらフレームが入る
  • エリアにスタック作れなくなるのが、OutOfMemomry!
  • スタックにフレームがふれるのが、StackOverflow!
  • Java6.12くらいから、オペランドスタックにインスタンスを作れるようになりました。
    • なにそれすごい。知らなかった
    • Escape Analysis
      • フレームから出て行かない(参照渡しとかしない)ことを見張っている子

「わかる!Javaバイトコード」(kmizuさん)

プログラミング言語としてのJavaバイトコードの説明とのことで、バイトコードの言語仕様をご紹介くださいました。

特に面白かったお話。

  • newはコンストラクタなしでオブジェクトだけ作る
    • 初期化前のメソッドが存在し得る?のか??
  • monitor(ent/exit)はコンパイラの責任

以下、ほげほげ。

  • カテゴリってなんだっけ?
  • 符号拡張がよくわからない。
  • 明示的なキャストならできるんかナァ
  • ワイドニング/ナローイングのi2なんとかとかの2って、つまり、toか
  • バイトコードの仕様の実装見たい。面白そう

LT: クラスローダリークパターン(nekopさん)

ほとんどわかりませんでした。吊ってくる。
「クラスローダに入れた値はスレッドから強参照される。こーどよむ」しかメモしてないや。何読めばいいんだっけ。

GCについて(cactusmanさん)

GCは50年も研究されてるらしい。壮大! HotSpot技術のお話でした。

  • 参照カウント
    • 自分への参照を数える。増えたら+1、減ったら-1。0になったら解放
    • 参照カウントって誰がもってるんだっけ
  • ヒープが2つあって上手く使うコピーの話
    • fromのヒープからtoのヒープにコピーして、コピーが終わったらfromの方のを捨てる
  • GCは種類に応じた役割がある
    • コピーGCやマーク&スイープGCのお話
    • 最後に、ちらっと出てきたパラレルGCも、GCなの? (わかってない)

LT: 「OC4Jクラスローダの話」(たてのさん)

何度も爆笑したのにメモがない。あー・・・
ラクルで開発されていて、今では伝説になった(らしい)OC4Jのお話でした。

ありがとうございましたっ

主催のyuroyoroさん、懇親会幹事のyamashiroさん、発表者の皆様、懇親会でお話ししてくださった皆様、ありがとうございました。会場提供くださったオラクルさんも、ありがとうございました。

花金に相応しい素晴らしい濃度のイベントでした。楽しかったです。

(余談)
「OAuthをライブラリ使わずに実装しる」というナゾのメモが、ケータイに残っていました。新しい言語を習得する勉強に、そこそこ適しているそうです。懇親会で、教えてもらいました。