タグ

classloaderに関するhiro360のブックマーク (8)

  • クラスローダについて - かとじゅんの技術日誌

    Javaでは欠かせないクラスをロードするためのクラスローダ。普段意識していないかもしれませんが、しっかりと縁の下で支えているよね。(Java言語仕様を確認しながら書いてないので間違っていたらツッコミよろしくです) クラスローダとは Javaクラスローダー(英: Java Classloader)とは、Java仮想マシンの一部で、JavaクラスをJava仮想マシンに動的にロードする役割を持つ [1]。通常、クラスは必要になったとき初めてロードされる。Javaの実行系は、クラスローダーがあるおかげでファイルやファイルシステムについて知る必要がない。 大きく分けて以下の3つの種類があります。 ブートストラップ クラスローダ エクステンション クラスローダ システム クラスローダ ブートストラップは、Javaのコアライブラリ($JAVA_HOME/lib/rt.jar)のライブラリ、パッケージがj

    クラスローダについて - かとじゅんの技術日誌
  • HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ

    JavaではClassはClassLoaderに読み込まれます。これはほとんどの人が知っていると思います。AOPを使うときのエンハンスされたクラスも同様にClassLoaderに読み込まれます。 これらの情報は、パーマネント領域に格納されますが、ClassLoaderがGCされると解放されます。 Seasar2のHOT reloadingでは、リクエストの度にClassLoaderを作って、そこにClassをロードし、そのClassLoaderは、リクエストが終わったら破棄しているので、Classの情報は、リクエストごとに破棄されています。 HOT relodingによって、パーマネント領域が使いつくされることはありません。 さらっと書きましたが、きちんとClassLoaderを破棄するのは、かなり大変です。リフレクションの情報がキャッシュされているとそれだけで破棄されなくなってしまうから

    HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ
  • はてなブログ | 無料ブログを作成しよう

    27年ぶりのYUKIライブ 2024/8/11。僕は埼玉の戸田市文化会館で行われた”YUKI concert tour “SUPER SLITS” 2024”に参加した。前にYUKIの歌声を聴いたのは1997/05/27の代々木第一体育館。実に27年の歳月が経ってしまった。 なぜそんなに間が空いたのか。なぜ、それでも参加しようと思ったのか…

    はてなブログ | 無料ブログを作成しよう
  • 2006-06-26

    今日の早耳ムスメは南明奈ちゃん,お題は「絶対おいしい!! 人気の冷たい麺」. 特にどうという事もなく... そういえば昔,石田香奈ちゃんの時はいつもこんな調子だったなぁ. http://d.hatena.ne.jp/t-katochin/20060623/1151082516 の最後で指摘されてるように,Tomcat 上で S2AOP を使うとリロードされても S2Container が GC されず,メモリ不足で例外が発生する場合があります. この現象は以前から聞いてはいましたが,きっちり調べることはしていませんでした. 理由は 運用環境でリロードなんてあり得ない. 開発/テスト環境では Tomcat を再起動すればいい ということで,致命傷になるとは考えていなかったためです. が,しかし. 某巨大掲示板でも困ってるという人がいるので調べてみました. まず,かとちんご指摘の循環参照につい

    2006-06-26
  • クラスローダメモその3 - wyukawa's diary

    Java では同じ名前のクラスでも,同じ .class ファイルから ロードされたクラスでも,異なったクラスローダーから ロードしたクラスは別のクラスとして扱われます. http://ml.seasar.org/archives/seasar-user/2007-January/007808.html クラスローダのディープな世界へようこそ. まず,Java ではクラスは VM 上に一つではなく, 同じクラスでもクラスローダごとに複数存在する 場合があります. そして異なったクラスローダでロードされたクラスは, たとえ同じ .class ファイルからロードされたもので あっても異なったクラスとして扱われます. 例えば Foo というクラスがクラスローダ A と B に ロードされた場合,Foo(A) と Foo(B) は異なった クラスであり,そのインスタンスも別物です. Foo(A) 型

    クラスローダメモその3 - wyukawa's diary
  • クラスローダメモその2 - wyukawa's diary

    クラスローダを自作する場合 1. DirectoryClassLoader の作成 import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class DirectoryClassLoader extends ClassLoader { private static final int BUFFER_SIZE = 1024; private final String targetDirectory; DirectoryClassLoader(String targetDi

    クラスローダメモその2 - wyukawa's diary
  • クラスローダメモその1 - wyukawa's diary

    クラスローダとはクラスをメモリ上にロードするもの。 J2SEでは以下の3つがある。自作することも可能。 ブートストラップクラスローダ:rt.jarのクラスローダ 拡張クラスローダ:lib/extのクラスローダ システムクラスローダ:classpathのクラスローダ クラスローダには親子関係があり、子は親を知っているが、親は子を知らない。兄弟も知らない。 子クラスローダに、クラスのロードの依頼があると、親に委譲し、最初に発見されたクラスがロードされる(parent first)。 具体的にjava.lang.ClassLoaderのloadClassメソッドを見ると、 findLoadedClassですでにロードされていないか調べて、もしロードされていないなら、親に委譲(ブートストラップクラスローダまで)。 見つからなかったら、findClassで探す。となっている。 protected s

    クラスローダメモその1 - wyukawa's diary
  • Java のクラスアンロード (Class Unloading)

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

  • 1