※ ChatGPTを利用し、要約された質問です(原文:メモリにロードされたクラスの判別方法)
メモリにロードされたクラスの判別方法
このQ&Aのポイント
Javaのプログラムで任意のクラスがメモリにロードされているかどうかを判定する方法を教えてください。
ClassLoaderクラスを使用すれば、任意のクラスがJavaVMのメモリ上にロードされているかどうかを判定できます。
具体的な使用方法についてはわかりませんが、インターネット上にサンプルコードやチュートリアルがあるはずです。
javaを勉強し始めてまだ1週間の入門者です。
見当違いの事を書いているかもしれませんが、その場合は指摘下さい。
条件は下記通りです。
AクラスとBクラスがある。
AクラスからBクラスを呼び出す。
AクラスとBクラスには継承関係は無い。
BクラスがjavaVMのメモリ領域にロードされるタイミングは以下のタイミングの認識で宜しいでしょうか?
1.AクラスからBクラスのstatic変数が参照されたとき
2.AクラスからBクラスをインスタンス化したとき
上記認識が正しい場合ですが、プログラム上でBクラスがjavaVMのメモリ上にロードされているかを確認する方法があるかを調べていたのですが良くわかりませんでした。
クラスAを実行させる際に、javaのverboseオプションを使用してクラスがロードされているのを確認する事はできましたが、プログラム上で判定できないかと思いました。
検索サイトで調べてみると、ClassLoaderクラスを使用すれば出来そうな感じがしたのですが、使い方が分からず行き詰ってしまいました。
上記のように任意クラスがjavaVMのメモリ上にロードされているかいないかを判別する手法があるようでしたら、サンプル等がある場所だけでも良いので教えて頂けると助かります。
以上、よろしくお願い致します。
補足
回答有難うございます。 >クラスがロード済か否かを調べる目的は何でしょうか。 深い意味はないのですが、内部的にJavaVMがどんなことをやっているのかを知りたいなと思いました。 また、まだ勉強していませんがガーベッジコレクションという機能があって、自動でメモリを開放していたりしますが、実際のプログラムで(明示的に指定はできませんが)確認できれば良いなと思った次第です。 >findLoadedClass()を使おうとしたのでしょうか。 仰るとおりです。もう一つCクラスを作成しました。 ClassLoaderをextendsして、findLoadedClass()メソッドを書いて確認しようとしましたが、イマイチ分からなく今回の質問に至りました。