+ -
当前位置:首页 → 问答吧 → 请教jvm类加载一个问题

请教jvm类加载一个问题

时间:2011-09-22

来源:互联网

通常一个系统跑在服务器上(例如TOMCAT),如果替换上面其中一个class文件,马上就会显示出新的结果,这个是因为服务器的classlorder重新加载这个类吗?是不是热部署?一个同事说不是热部署,是JVM的热点动态编译。。。是不是这个原因呢?

我看classloader源码,loadClass这个方法首先会查询是不是已经加载了,如果已经加载了就会直接返回不会再加载一次,鉴于这个原因我想替换class文件并且显示新的效果,那肯定是classloader重新加载这个类,是不是?谢谢

作者: gaojava   发布时间: 2011-09-22

应该要重新classloader把class文件加载到内存中吧

作者: dxwapa   发布时间: 2011-09-22

1.类必须要加载之后才能使用
2.是不是热部署这个我不知道(但是这个类肯定被重新加载过),但是我知道肯定不是JVM的热点动态编译,你发布的是CLASS文件,JVM还会编译吗?

作者: fainfy   发布时间: 2011-09-22

jvm的工作原理是 当你需要这个类的时候它才去装载 所以当你在调用该类 而该类又没有保存在jvm的方法区的时候就会重新去找你需要的类 也就是会把你新替换的类 给加载进去

作者: lost_guy_in_scut   发布时间: 2011-09-22

不知道。。顶一下

作者: hongzhelin   发布时间: 2011-09-23