悪あがきプログラマー

悪あがきを続けていきたい技術と書評なブログです。トレタでiOSエンジニアやってます。

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

わかる!JavaVM ― 2時間でわかる?JavaVM入門 : ATND

クラスローダーについて - @

  • クラスロードの仕組み
    • クラスローダーの作り方
    • ロード処理の委譲
    • 親で探して、なかったら自分のfindClassを見る方法を推奨している
  • 現実の委譲スタイル
    • 自信のクラスローダーをまず最初に検索し、最後に親を見に行く
    • 親のライブラリに影響を受けにくい
  • java.lang.ClassLorderを継承してカスタムローダーを作る
    • findClass()をオーバーライドする
  • 他のクラスローダーにロードを委譲できる
    • 通常は移譲先から順にクラスを探索
  • クラスの名前空間の話
    • 同じ名前でも違うクラスローダーでロードしたクラスは別物として扱う
    • Class.getClassLoader()で定義を返す
    • 子から親は探せるが、親から子は探せない
  • リローディングの技術
    • Seaser2やJUnitで使用されている
    • JVMを立てたままクラスをリロードして即座に変更を反映
    • そのやり方
      1. リローディング用のClassLoaderを作る
      2. 親のバイナリを拝借
      3. リローディング用のクラスローダーの方で定義する
    • リクエストごとにクラスローダーを作り直す
    • モデルの引き継ぎが意外と大変
      • 自作するとたいていハマる
  • アンロードの条件
    • クラスローダーが生きているうちはGC回収可能にならない
      • 初期化を2回しないため

スタックモデルについて - @

(資料は上がってないのかな?)


音ありのFlashバージョンを希望の方はこちらを。
http://www.javainthebox.net/publication/20100806JVMseminar/stackmachine.html


Stack on JavaVM
マカロン大好き、笑顔が素敵な櫻庭さん。
かわいいスライドに音有りのプレゼンでした。

1 + 2 = 3

1 2 + = 3

  • 何がうれしいの?
    • かっこがある演算をかっこなしで記述できる

(2 + 3) * 4 + (7 - 2)

2 3 + 4 * 7 2 - +

  • JVMにbooleanという型はない。intで表している。

まとめ

Javaバイトコード入門 - @

Javaバイトコードとは?

  • オペコードが1バイトであることに由来
    • 1命令が必ずしも1バイトということではない

その他は、、、難しかったっす><

クラスローダリークパターン なにそれおいしいの? - @

いつリークする?

  • クラスローダが破棄、再起動するとき
    • 生きてる参照がのこってるから
    • クラスローダをまたがる参照が残っているから
  • ThreadLocalの参照構造
    • Threadから強参照される。
  • java.util.loggingのLevelを継承するとリークする

GCについて - @




GCとは、プログラム上で不要になったメモリをまとめること。
詳細は下記本に書いてありますw
ガベージコレクションのアルゴリズムと実装
中村 成洋 相川 光
秀和システム
売り上げランキング: 8611
おすすめ度の平均: 3.5
2 擬似コードのバグは見て見ぬふり
5 GCの入門書として今のところ最強!

GCの方法のまとめ

  • マーク&スイープ
  • 参照カウント
  • コピー

なれる!CL 5分間で分かる?(OC4J)クラスローダ入門 - たての@日本オラクル

その昔、OC4JというOracleアプリケーションサーバがあって
その改修とかをしてたときのお話。
そのOC4Jは結局は。。。

  1. きほんだ
    • まずは親から。
  2. こまった
    • 密結合モデル
    • 多くのアプリが乗っている
    • 多くのライブラリが乗っている
    • 関連もあるし、バージョンも複数ある
  3. こうした
    • 親子関係じゃ足りない
    • loadClassの上書きは修羅の道(でもやる)
    • 見た目は親子関係+共有ライブラリ
    • 親子関係を特別扱いしたくない
    • ポリシーを組み合わせる
    • PolicyClassloader
      • SearchSequence
    • テンプレートでらくらく設定
    • なかなかよくできていた
  4. そして伝説へ

所感

初めてJVMについての勉強会に参加しました。
普段JVM内部に関しては全く意識していなかったので、大変勉強になりました。
(なんだか、slideshareが残念な状態ですね。多分そのうち見れるようになると思います)

以下はTwitterとかで上がってたこれ読んどけ本です。

Java仮想マシン仕様 (The Java series)
ティム リンドホルム フランク イェリン
ピアソンエデュケーション
売り上げランキング: 92037
おすすめ度の平均: 4.0
4 Java VMのリファレンスといったらこれ

最後に…

懇親会の件、ほんと申し訳なかったです。。