首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GroovyClassloader行为

GroovyClassloader行为
EN

Stack Overflow用户
提问于 2012-02-03 14:16:10
回答 1查看 442关注 0票数 0

GroovyClassloader行为理解,

代码语言:javascript
复制
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("groovy");
GroovyScriptEngineImpl groovyEngineImpl = (GroovyScriptEngineImpl) engine;

在一个循环中,

代码语言:javascript
复制
for (int i = 0; i < 10; i++) {
            long startTime = System.currentTimeMillis();
            classLoader = new GroovyClassLoader(groovyEngineImpl.getClassLoader().getParent());
            fileName = fileName + i;
            Class groovyClass = classLoader.parseClass(s,fileName);
            long endTime = System.currentTimeMillis();
            System.out.println("Total elapsed time in execution o  " + (endTime-startTime));
            startTime = System.currentTimeMillis();
            groovyClass = classLoader.parseClass(s,fileName);
            endTime = System.currentTimeMillis();
            System.out.println("Second Time Total elapsed time in execution o  " + (endTime-startTime));


}

关于上述代码,我有几个问题:

for循环中的

  1. --我正在创建一个新的groovyclassloder对象,并对groovy脚本进行两次解析。当循环第二次迭代并再次解析groovyscript时,会发生什么?
  2. 第二次创建另一个对象时会发生什么。类加载器将设法从类路径中获取类,还是再次重新编译类?当重新编译被触发时,
  3. 如何知道源被更改?
EN

回答 1

Stack Overflow用户

发布于 2012-02-03 14:40:36

  1. 每次在循环中丢弃类加载器并创建一个新的类加载器。这个新的classLoader将不了解您丢弃的classLoader加载的类
  2. ,这取决于s的类型。如果它是一个文件,它将检查它是否需要重新编译,如果不是,它将使用相同的类。如果它是一个again
  3. https://github.com/groovy/groovy-core/blob/master/src/main/groovy/lang/GroovyClassLoader.java#L845

或什么的,那么它将不得不从is字符串String重新编译这个类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9130004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档