我使用自定义版本的 Tomcat 开发应用程序。 支持动态类加载,我在测试和开发环境中经常使用它,我也很好奇在生产环境中使用它的影响。
据我所知,由于性能问题,动态类加载不会在生产中使用,因为类加载器会在每次访问时轮询类。
但是,此应用程序服务器支持配置轮询频率以加载新类。
如果我理解正确,如果我将动态类加载配置为每隔相当长的时间(即 1 小时)进行轮询,我应该避免对性能产生最不利的影响。
在生产中,这种机制的使用方式有限:
1) 无需用户停机的紧急补丁(修复将在第一次停机时发布)
2) 永久修补我们没有源代码的类(遗留的第三方库)
这是可靠的解决方案吗?
谢谢
最佳答案
恕我直言,您不应将该功能用于生产。
除了轮询开销之外,可能还有很多其他情况不会在开发环境中引起问题
我想到的几件事是
- 对编译期间内联的任何常量的影响
- 对烫发空间的影响
- 您忘记了在生产环境中部署的版本
- 打补丁时可能会出现类文件丢失等错误
关于java - JAVA动态类加载的性能开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12579615/