【技术实现步骤摘要】
一种基于Java的热更新方法及装置
[0001]本申请涉及计算机
,特别涉及一种基于Java的热更新方法、装置、计算设备和计算机可读存储介质。
技术介绍
[0002]现有技术中,服务器热更新技术是指在不中断服务的情况下来实现代码更新的技术。在JDK1.5以后,提供了Java Agent的代理机制,热更新的流程大致为:配置jdk的
‑
javaagent启动参数;使用Instumentation API来修改已加载的类;在每个Method
‑
Call和Field
‑
Access的地方都动态加上一层代理,并动态生成一个代理实现类;通过监控某个路径或者Jar,对于每次修改的类,直接加载一个全新的实现类,作为被代理对象。但是这种方式内部实现复杂,对反射及异常栈支持不友好,从而不方便对线上业务进行调试和修复。
技术实现思路
[0003]有鉴于此,本申请例提供了一种基于Java的热更新方法、装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。 />[0004]根据本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于Java的热更新方法,其特征在于,包括:实时监控指定目录下的Java文件变化;当发现Java文件发生变化时,在运行时实时编译变化的Java文件,得到对应的字节码文件;通过自定义类加载器加载所有的热更新字节码文件,实例化所有的对象并完成对象的替换。2.根据权利要求1所述的方法,其中,在指定目录下,通过特定的文件后缀对可热更新的Java文件进行标识。3.根据权利要求2所述的方法,其中,在运行时实时编译变化的Java文件,得到对应的字节码文件包括:通过JavaCompiler在运行时将发生变化的Java文件编译为.class文件。4.根据权利要求1所述的方法,其中,实例化所有的对象并完成对象的替换包括:在进行对象替换时通过Copy
‑
On
‑
Write的方式瞬时动态的替换所有旧的对象。5.根据权利要求4所述的方法,其中,通过Copy
‑
On
‑
Write的方式瞬时动态的替换所有旧的对象包括:利用第一容器保存前一次热更新实例化对象,将具有volatile属性...
【专利技术属性】
技术研发人员:张伟伟,袁冠鹏,李建良,何雨泉,
申请(专利权)人:北京云游互动网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。