26、低干扰动态更新技术解析

低干扰动态更新技术解析

1. 类转换方法

类转换方法 updateClass 与对象转换方法类似,但它主要处理静态字段。每个被删除的静态字段的值作为带注释的方法参数提供。

1.1 超类型处理

当当前类型变更类的超类也发生类型变更时,超类对应的转换类需要作为超类被继承。如果为超类定义了对象转换方法,Javelus 会在当前类的对象转换方法开始时自动调用它。

1.2 转换代码编写注意事项

开发者可以自由使用 Java 语言编写转换代码,但要注意类更新可能在任何 DSU 安全点发生,对象转换在类更新后按需触发。为确保语义正确性,需要深入理解应用逻辑和两个版本之间的差异。一般来说,差异通常较小,转换逻辑也相对简单。

1.3 编程技巧与策略

  • 避免潜在死锁 :在转换代码中不要使用锁。
  • 谨慎访问对象状态 :除非明确知道操作后果,否则不要访问当前对象的局部状态以外的值。
  • 限制 DSU 发生时间 :将 DSU 发生时间限制在旧版本和新版本行为“收敛”的时间段内。可以手动将一些方法添加到受限方法集中,避免在这些方法活动时进行 DSU,但这可能会降低动态更新的及时性。

2. 更新代码

2.1 到达 DSU 安全点

运行的程序需要到达 DSU 安全点才能进行更新。DSU 安全点是更严格的 VM 安全点,此时应用线程栈中不包含任何活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值