请问tomcat的reload功能是如何实现的?

在tomcat中有一个reload功能,就是当新的类覆盖到原有的classes以后,系统会自动装入新类,那样一来,不需要重新启动web server,就可以正常工作。

我试了一下,用java.lang.ClassLoader类的defineClass()方法可以从文件或其他来源动态装入一个类,此方法返回一个Class。
可是这样一来,装入类好像只能用Class.newInstance()方法来产生一个实例。
而在程序中new一个实例还是调用旧的类?

哪位知道类似于tomcat的reload功能是如何实现的?

建议看一下源码,它是用一个监测器监测的。

可能要 destroy 掉原来的 ClassLoader 换上新的 ClassLoader.
对于 JVM 来说, Class 的不同就是看它来自哪个 ClassLoader.