5. COM って ?
● この結論でなるほどと分かる方は今日の話は面
白くないかも。
● COM についてはあまり知らなかったので、その辺
も色々調べてみたというのが今日の内容です。
6. OpenBinder って ?
● The Binder could be described as a "framework
framework". It doesn't do anything itself, but is an
enabling tool for implementing other rich frameworks,
such as the view hierarchy, media framework, etc.
(OpenBinder Binder Kit の説明から )
7. OpenBinder って ?
● OpenBinder was really designed as an operating
system component framework.
( インタビューから )
● つまり、 OpenBinder は OS 上に View フレームワークや
Media フレームワークなどを構築するためのコンポーネン
トフレームワークであり、
“ ”フレームワークのためのフレームワーク 。
25. 参照カウントの例
class A { public B b;}
class B { public A a;}
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.b = b;
b.a = a;
}
}
26. 参照カウントの例
●A を生成 A の参照カウント 1
●B を生成 B の参照カウント 1
●A から B を参照 B の参照カウント 2
●B から A を参照 A の参照カウント 2
Test
Object A Object B
① ②
③
④
28. 循環参照の例
class A { public B b;}
class B { public A a;}
public class Test {
public static void main(String[] args) {
A a = new A();
B b = new B();
a.b = b;
b.a = a;
a = null;
b = null;
}
}
29. 循環参照の例
●A を生成 A の参照カウント 1
●B を生成 B の参照カウント 1
●A から B を参照 B の参照カウント 2
●B から A を参照 A の参照カウント 2
●A への参照を削除 A の参照カウント 1
●B への参照を削除 B の参照カウント 1
A 、 B は到達不可能だが
参照カウントは 1 のまま
Test
Object A Object B
①
②
③
④
⑤ ⑥
31. Test
Object A Object B
①
②
③
④
⑤ ⑥
弱い参照の例
●A を生成 A の参照カウント 1
●B を生成 B の参照カウント 1
●A から B を参照 弱参照のため B の参照カウントは増えない
●B から A を参照 弱参照のため A の参照カウントは増えない
●A への参照を削除 A の参照カウント 0
●B への参照を削除 B の参照カウント 0
A 、 B は参照カウント 0 になり、
自分を削除する。