繁体   English   中英

Apache BeanUtils.copyProperties 首次访问缓慢

[英]Apache BeanUtils.copyProperties slow access for the first time

当我用 main 函数在 idea 中运行 springboot 项目时,它第一次并没有变慢。

当我在 cmd (java -jar demo.war) 中运行然后项目时,它第一次变慢(约 600 毫秒),第二次变慢约 10 毫秒。

可能的原因是什么?

项目说明 gradle6.6 springboot2.3.0RELEASE

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'commons-beanutils:commons-beanutils:1.8.3'
}

1.通过调试方法,最终在ClassFinder中找到方法findClass,这里是

try {
            ClassLoader var1 = Thread.currentThread().getContextClassLoader();
            if (var1 == null) {
                var1 = ClassLoader.getSystemClassLoader();
            }

            if (var1 != null) {
                return Class.forName(var0, false, var1);
            }
        } catch (ClassNotFoundException var2) {
        } catch (SecurityException var3) {
        }

var1 是 TomcatEmbeddedWebappClassLoader,加载类很慢

2.我认为问题是类加载器,然后我更改了Servlet容器

dependencies {
    implementation ('org.springframework.boot:spring-boot-starter-web'){
        exclude group:'org.springframework.boot',module:  'spring-boot-starter-tomcat'
    }
    implementation 'commons-beanutils:commons-beanutils:1.8.3'
    implementation 'org.springframework.boot:spring-boot-starter-undertow'
}

3. 调试 findClass 方法,我发现 var1 是 LauchedURLClassLoader,它可以快速加载类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM