java - JAVA动态类加载的性能开销

标签 java tomcat dynamic-class-loaders

我使用自定义版本的 Tomcat 开发应用程序。 支持动态类加载,我在测试和开发环境中经常使用它,我也很好奇在生产环境中使用它的影响。

据我所知,由于性能问题,动态类加载不会在生产中使用,因为类加载器会在每次访问时轮询类。

但是,此应用程序服务器支持配置轮询频率以加载新类。

如果我理解正确,如果我将动态类加载配置为每隔相当长的时间(即 1 小时)进行轮询,我应该避免对性能产生最不利的影响。

在生产中,这种机制的使用方式有限:
1) 无需用户停机的紧急补丁(修复将在第一次停机时发布)
2) 永久修补我们没有源代码的类(遗留的第三方库)

这是可靠的解决方案吗?

谢谢

最佳答案

恕我直言,您不应将该功能用于生产。
除了轮询开销之外,可能还有很多其他情况不会在开发环境中引起问题

我想到的几件事是

  1. 对编译期间内联的任何常量的影响
  2. 对烫发空间的影响
  3. 您忘记了在生产环境中部署的版本
  4. 打补丁时可能会出现类文件丢失等错误

关于java - JAVA动态类加载的性能开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579615/

相关文章:

java - 使用 eclipse 和 axis 2 生成第一个 Web 服务客户端时出现问题

java - 我的 Android 库中的包结构更好

tomcat - 如何编写 JUnit 类来测试在 tomcat 中运行的一些 java 类?

java - 通过 Class.forName 进行动态类加载是否可以使用简单的类名

java - JMeter错误: jmeter.线程.JMeterThread : Test failed! java.lang.NoSuchFieldError:实例

java - Tomcat 警告 : The executor associated with thread pool [http-apr-8080] has not fully shutdown

tomcat - 在 Pentaho Release 5.2.0.0.209 中更改 BA 服务器完全限定的 URL

java - Beanshell 不允许我将 jar 添加到 "default"JRE 类加载器?

java - 如何从不同位置动态加载 jar 到当前类加载器?

Java Spring Security - User.withDefaultPasswordEncoder() 已弃用?