热部署(Hot Deploy)
热部署针对的是容器或者是整个应用,部署了新的资源或者修改了一些代码,需要在不停机的情况下的重新加载整个应用。
热部署原理
热部署是加载整个应用程序,包括运行需要使用到的各种文件,比如 Jar 包,JS 或者 CSS 或者 html 等静态文件或者一些配置文件等。我们以 Tomcat 为例,它首先校验是否开启了热部署,并且发生了修改,它有一个后台线程,定期进行 reload 检测,如果检测需要重新部署,即热部署,则先停止,然后启动,这期间会清理 session,清空内存。
热加载(Hot Swap)
热加载针对的是单个字节码文件,指的是重新编译后,不需要停机,应用程序就可以加载使用新的 class 文件。
热加载的原理
如果应用系统简单的话,可以开启一个单独的线程,间隔时间内重新加载所有的 class 文件。如果稍微大一点的话,需要考虑性能,尽量识别出哪些需要被热加载,比如根据 class 文件最新更新时间判断等等。因为他不会清理内存吗,所以有内存溢出的风险,所以成熟的热加载软件或者系统都会有对应的方案来处理。