自体は強参照されるのでメモリリークしないように注意せよ」というのがある。知っている人にとっては昔から既知の話題なんだけど、知らないと罠にはまってしまいがちなポイントでもある。実装を担当するようなプログラマーであってもはまってしまうくらいなのだから。特別扱いする特殊なオブジェクトだ。特別扱いされており、そのインスタンス変数だけは、通常の参照とは異なる「弱参照」になる。いう文字列が出力される。保持されているからだ。自体も回収されることがない。オブジェクトを取り出して、コンソールに出力することが、確実にできる。対して、次の例のように弱参照では確実とは言えない。呼ぶとその参照を返す。いう文字列が出そうに見える。回収されてしまう可能性がある。いう文字列になるかもしれない。以上のように、一見結果が不安定になるだけに見える弱参照だが、使い道はいろいろある。回収されなくなってしまう。オブジェクトはリソースを多く消費するので、それは避けたい......という場合に、弱参照を使うことが考えられる。リファレンスを参照のこと。回収してよいかどうかの判断は他の一般的なオブジェクトとまったく同じルールで行われる、ということだ。ログ出力元を表すクラスだ。使って自分の子を保持するようになっている。(実際には当時まだジェネリクスはなかったけど)。ArrayList<Logger>();一見何の問題もないが、実は問題大ありである。保持されたままになる。世に言うメモリリークというやつだ。回収できるようになる、というわけだ。...}ところが、これでもまだ問題があった。オブジェクト自体はいつまでたっても回収されないままだったのだ。削除するという動作が追加された。実際に起きた例を紹介する。ややこしいので、うまく説明できるか自信がないが......。ある前述のバグが原因でヒープが不足していたことがわかった。して登録・公開する仕様になっていた。等のツールを使っていつでもコネクションの状態を確認できるようになっていた。登録・解除を行う際にもログ出力を行うようになっていたが、その使い方がちょっと変わっていた。インスタンスを自分で保持せずに、必要になる都度取得する、という書き方になっていたのだ。イメージでいうとこんな感じ。インスタンスは作成済みなので、そのインスタンスが再利用されて終わる。