老早之前已经写过几篇classload的文章了,由于我们现在的java 框架里面用到了热部署,所以在回味下吧。先看下之前的文章
http://blog.csdn.net/chaofanwei/article/details/12858523
热部署,即需要jvm释放之前加载的业务class,且重新加载最新的业务class,并释放之前的class(卸载),其实类和普通对象一样都是对象,即如果从gc root除非,没有引用此类的别的对象存在,即会被jvm自动回收。
http://blog.csdn.net/chaofanwei/article/details/12858523
1、classloader介绍
热部署,即需要jvm释放之前加载的业务class,且重新加载最新的业务class,并释放之前的class(卸载),其实类和普通对象一样都是对象,即如果从gc root除非,没有引用此类的别的对象存在,即会被jvm自动回收。
class文件在加载时,会把二进制文件放在内存中,并会在堆取new出一个表示此class的class对象,然后若new 类对象,则再把此new出来的对象的class对象指向刚才创建的class对象.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
类加载卸载图:
2、jdk自带classload介绍
还是直接看图吧
2.1类图
2.2 Classloader.loadClass(String name,boolean resolve)流程图
2.3 URLClassLoader.findClass(String name)流程图
3、实战
先贴代码:</