springboot热部署(一)——Java热部署与热加载原理

时间:2023-03-08 15:35:49
springboot热部署(一)——Java热部署与热加载原理

一、概述 

  在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载。

  对于Java应用程序来说,

    热部署就是在服务器运行时重新部署项目,——生产环境

    热加载即在在运行时重新加载class,从而升级应用。——开发环境

二、实现原理

  热加载的实现原理主要依赖java的类加载机制,在实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。

  对比反射机制,反射是在运行时获取类信息,通过动态的调用来改变程序行为; 热加载则是在运行时通过重新加载改变类信息,直接改变程序行为。

  热部署原理类似,但它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。

  深入的原理解析,参考importNewhttp://www.importnew.com/17115.html

  Tomcat实现热部署的三种配置方式http://blog.csdn.net/nlwangxin/article/details/49734659

三、自定义ClassLoader实现热加载

  参考网友博文http://rejoy.iteye.com/blog/1806370