あれ、java-ja温泉の事って書いてなかったっけか。書いてなかったのか......。いうわけで行ってまいりましたJVM勉強会。VMの中の人まで意識した設計をしたことがなく、ClassLoaderをサンプルでちょこちょこって動かした程度のレベルですが。参考資料とりあえず、会場で持ってる人が割といた、もしくは発表内で話題にあがった本など。Java仮想マシン仕様ガベージコレクションのアルゴリズムと実装デコンパイリングJavaこの辺りを読んでくると、より内容を楽しめた模様。クラスローダについてクラスローダはfindClass()をオーバライドするloadClass()を実行すると委譲先クラスを探しにいく。PARENT_LASTその名のとおり自分のクラスローダを最初に検索するので、親のライブラリの影響を受けにくい同じ名前のクラスでも定義ローダーが違えば別のもの。Class.getClassLoader()でどこから呼ばれたか確認できる。PARENT_LASTの問題点としてドッペルゲンガーという現象。->longなど配列関係の命令オブジェクトの生成・操作命令モニタ命令クラスファイルベリファイアclassファイルのフォーマットがJava仮想マシン仕様に従っているかどうかを該当クラスの初期化より前にチェックする。(OC4J)クラスローダ入門OC4Jのおはなし。なにこれすごい受けたい!クラスローダは親子モデル、親からロードし子は最後。基本は1JavaVM1アプリ1ライフサイクルなのだが、現在は多くのアプリ・多くのライブラリが乗っているので、依存やバージョン競合が起こりそう。親子関係では足りなくなるのでloadClassの上書きという修羅の道を通った人もいる。OC4JはWebLogicServerへ...そして伝説へ...GCの仕組みなど普段は中の人にやってもらっていたところが、どんな仕組みになっていたのかなんとなくイメージできたかな...。逆ポーランドとスタックは絡めて説明すると感覚的にすごく頭に入ってきやすいと思いました。最後に、主催者の@yuroyoroさん、二次会を取りまとめてくださった@yamashiroさん、会場を提供してくださった日本Oracle社さんに感謝。Worldをjavapしてみましょう。