タグ

classloaderに関するimai78のブックマーク (9)

  • ClassLoader#defineClassでクラスのインスタンスを作ってみる - kagamihogeの日記

    Java Advent Calendar 2011 : ATND 用のエントリです。今回の個人テーマは、使ったことのない無いJavaAPIを使ってみる、です。 java.lang.ClassLoaderを見るとdefineClass(String name, byte[] b, int off, int len)というメソッドがあります。javadocによると「バイトの配列を Class クラスのインスタンスに変換します。」とある。これはちょっと面白そうなので、少し試してみることにします。 まずは適当なクラスを用意します。 package classloadertest; public class Hoge{ public int getHogeMethod() { return 10; } } コンパイルしたあとバイナリエディタ*1でHoge.classファイルを覗いてみます。下図のう

    ClassLoader#defineClassでクラスのインスタンスを作ってみる - kagamihogeの日記
  • JBoss ASのクラスローディング - nekop's blog

    前回のクラスローダの話に引き続き、JBoss ASのクラスローディングについて書いておく。 JBoss ASのクラスローダの実装面の細かい話とか、ブートストラップクラスローダとシステムクラスローダの違いだとかendorsedとかのお役立ち度の低い細かい話は対象外。利用者が最低限抑えておきたいところ、という観点で書く。 基的な構造 JBoss ASのクラスローディングは基的には以下の構造になっている。 システムクラスローダ JBoss AS共通部 EAR WAR ロード順はもちろん子優先(Child-firstもしくはParent-lastと呼ばれる)。たったの4階層だし、特に難しいことや困ることは無いはず。 EARの分離モード JBoss ASでは一点だけ注意するところがある。JBoss ASは歴史的な理由から、EARのクラスローディング分離がデフォルトでOFFになっている。これは、上

    JBoss ASのクラスローディング - nekop's blog
  • Togetter - まとめ「javaのクラスローダ同時多発TLのまとめ」

    tissi @tissi まだ実戦投入したこと無いんだけどJava6のスクリプトエンジンは超使える。ゲームとかエンジンはC++で、AIとかLuaで書くけど、あのノリがJavaで使える。ノンストップでビジネスロジックをリロードする箇所を明示的に作れるのがいい。クラスローダいじる系は危なすぎる。

    Togetter - まとめ「javaのクラスローダ同時多発TLのまとめ」
  • HOT reloadingとClassLoaderを理解しよう - ひがやすを技術ブログ

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

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

    は思想や未来に影響を与える。お前もブックサンタにならないか? 12月ですね。しわーっす!(挨拶) 年末になると募金だとか寄付、助け合いの話題が盛り上がりますね。 以前にも、インターネットに恩返しして、人類の発展に貢献しちゃおうという記事やら、Be My Eyes について書いたりしたのですが、ちょっとした自分の時間や少しのお金

    はてなブログ | 無料ブログを作成しよう
  • Java のクラスアンロード (Class Unloading)

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

  • オンデマンドデプロイのすすめ - ひがやすを blog

    JavaでAnnotationがついたクラスがあったら、それに対して処理したい場合は、Seasar2のコンポーネント自動登録で使っているように、ファイルシステムまたは Jar ファイルを全走査してクラスロードする方法もあります。 ファイルシステムまたは Jar ファイルを全走査してクラスロードしてください。が結論です。 Seasar だったら、 org.seasar.framework.util.ClassTraversal を読むべし。 でも、これは、Seasar2.3時代(3年前)の話で、技術としてはちょっと古い。 HOT deployなどと組み合わせると、リクエストのたびに全コンポーネントをデプロイする必要があるので、コンポーネントの数が増えると実用的には使えないのです。 そこで、考え出したのが、Seasar2のONDEMAND deploy。コンポーネントの定義を見に行って、あれば

    オンデマンドデプロイのすすめ - ひがやすを blog
  • ClassLoader

    ここでは,ClassLoaderの役割から独自ClassLoaderの 作成方法についてお話します. Javaでは,classファイルに書かれたバイトコードから Classクラスを作成し,そこからオブジェクトを生成します. このバイトコードからClassクラスを作成するのが,ClassLoaderです. したがって,ClassLoaderは非常に重要な役割を果たします. ClassLoaderは,以下のプロセスを行います. すでにロードされていれば,再利用.(findLoadedClass) classpath,Jarファイルなどからバイトコードを獲得 バイトコードからクラスを定義する(defineClass) クラスの依存関係を解決する(resolveClass) 逆に,Java実行後,一度ロードした後のソース変更による クラスの更新はできません. 一般に,これを行うためには,Class

  • 1