0

プログラムの実行中に何度も使用する必要があるクラスのリストがあります。コードは頻繁に変更される可能性があるため、動的にロードする必要があり、簡単に更新できるようにサービスとして扱いたいと考えています。ここで私の質問:

クラスが変更されていない場合でも、UrlClassLoader は常にクラスを再度ロードしますか? これにより、パフォーマンスまたはメモリの問題が発生する可能性はありますか?

これをテストするための私のコードは次のとおりです。

package classloader;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class ClassLoaderClass {
    public static void main(String[] args) throws ClassNotFoundException, MalformedURLException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, InterruptedException {

            //no paramater
            Class noparams[] = {};

        URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{new URL("file:///C:/Users/hm/Documents/classes/")});
        Class gsonClass = urlClassLoader.loadClass("AppTest");
        Constructor constructor = gsonClass.getConstructor();
        Object Apptest = constructor.newInstance();
        Method method = gsonClass.getMethod("printIt",noparams);
        Object returnObj =  method.invoke(Apptest, null);
        String jsonString = (String)returnObj;
}

}

あなたが私を助けてくれることを願っています、ありがとう。

4

1 に答える 1

0

URLClassLoader は、クラスが既にロードされているかどうかをチェックし、再度ロードしません。詳細については、 ClassLoader.loadClass()を参照してください。

于 2014-06-22T13:31:06.240 に答える