[英]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.