タグ

2013年2月12日のブックマーク (3件)

  • Java のクラスアンロード (Class Unloading)

    作成日:2004.05.18 更新日:2005.06.21 今後、随時書き足して行きます。多分。 はじめに Java は動的にクラスのロードとアンロードが行われる仕組みになっている。 クラスはクラスファイルの形でディスク上やネットワークに配置され、プログラム中でそれらが当に必要になった段階で JavaVM 上に読み込まれる。 またクラスはその使用が終わった段階でガーベージコレクターによって動的に回収され JavaVM からアンロードされる。 Servlet / J2EE サーバーなどはこの性質を利用して運用中にプログラムの一部を入れ替えるホットスワップ (Hot Swap) を実現している。 だがこの仕組みを実装するには少し工夫がいる。 この文書ではクラスのアンロードを実現するやり方について述べる。 1. クラスのロードとアンロードの基的な仕組み クラスローダー Java VM がクラ

  • コンテキストクラスローダって何だ? - masugata_kの日記

    システムクラスローダと似たようなものに、「(スレッドの) コンテキストクラスローダ (context class loader)」というものがある。前々から名前だけは知っていたのだが、特に必要とする機会もなかったので何なのかは知らないままだった。今回、システムクラスローダが何なのかを調べたついでにこちらも調べたので、これも忘れないように書いておく。 そのスレッドで使われるクラスローダ、ではない 時折見かける間違いとして、「スレッドのコンテキストクラスローダは、そのスレッド内で発生するクラスやリソースのロード要求を処理する」というものがある: 『クラスローダサーブレット-TECHSCORE-』 ところでアプリケーションはメインスレッドも含めて、必ず1つ「コンテクスト・クラスローダ」を持ちます。コンテキスト・クラスローダとは、そのスレッド内でクラスをロードする場合に使用されるクラスローダのこと

    コンテキストクラスローダって何だ? - masugata_kの日記
  • 用語は正しく覚えよう: システムクラスローダとブートストラップクラスローダ - masugata_kの日記

    ディスカッションの最中、どうも話がかみ合わないと思ったら用語の使い方が間違っていた、ということが時々ある。同じ概念を違う用語で呼んでいる場合はすぐに気づくので問題ない*1が、同じ用語で違う概念を指していると混乱の元凶になる。なので、ちょっと面倒ではあるが、正しい用語を1次情報に当たって確認するクセを付けてほしい。 とまあ偉そうなことを書いたが、僕自身、用語を間違って覚えていて相手を混乱させてしまった経験は枚挙に暇がない。今回もまた1つそんなことがあったので、備忘のためにここに書いておく。 間違って覚えていた用語は「システムクラスローダ (system class loader)」。java.lang.ClassLoader#getSystemClassLoader() で取得できるクラスローダのことだが、実は、JVM が内部的に持っているクラスローディング機構((JVM には、ClassL

    用語は正しく覚えよう: システムクラスローダとブートストラップクラスローダ - masugata_kの日記