类的生命周期定义在Java虚拟机规范第12章,包括类的加载、链接、初始化和卸载。

具体类的加载和卸载过程可以在Java虚拟机启动的时候加上-verbose class参数来查看。
下图比较形象地展示了类的整个生命周期:

具体请参见博客:深入理解JVM(六)——类加载器原理
下面我想提出一个问题,类的加载机制有什么作用?
我们可以看tomcat控制台中关于项目的操作:

可见,针对项目有开启、停止、重新加载和卸载的操作。
那么问题来了,如果点击停止,已经加载到JVM中的和这个项目相关的所有类都应该卸载掉。如果点击重新加载,卸载掉以前加载的类然后再重新加载一遍。这是如何实现的?
如果要明确的区分属于不同项目的类,每个项目使用的类加载器必须是不同的。
下面一篇文章详细的描述了Tomcat中类加载过程:
违反ClassLoader双亲委派机制三部曲第二部——Tomcat类加载机制
还有一个我在面试时被问到的问题:Java中的类如何实现热更新?
可以参考下面一篇文章:
Java类中热替换的概念、设计与实现
类的生命周期
最新推荐文章于 2024-03-15 13:39:30 发布
1108

被折叠的 条评论
为什么被折叠?



