原来热加载如此简单,手动写一个 Java 热加载吧
摘自: https://www.cnblogs.com/niumoo/p/11756703.html 原来热加载如此简单,手动写一个 Java 热加载吧 1. 什么是热加载 热加载 是指可以在不重启服务的情况下让更改的代码生效, 热加载 可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境。 2. 热加载与热部署的区别 首先,不管是 热加载 还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的。 那么两者到底有什么区别呢? 在部署方式上: 热部署是在服务器运行时 重新部署 项目。 热加载是在运行时 重新加载 class 。 在实现原理上: 热部署是直接重新 加载整个应用 ,耗时相对较高。 热加载是在运行时 重新加载 class ,后台会启动一个线程不断检测你的类是否改变。 在使用场景上: 热部署更多的是在 生产环境 使用。 热加载则更多的是在 开发环境 上使用。线上由于安全性问题不会使用,难以监控。 3. 类加载五个阶段 可能你已经发现了,图中一共是7个阶段,而不是5个。是因为图是类的完整生命周期,如果要说只是类加载阶段的话,图里最后的使用(Using)和卸载(Unloading)并不算在内。 简单描述一下类加载的五个阶段: 加载阶段:找到类的静态存储结构,加载到虚拟机