- 卸载时不回滚字节码
RASP 更新插件代码时,需要将 plugin 的全部对象置空,否则会有内存泄漏问题,特别是元空间的内存泄漏,将导致业务将运行越来越慢,直到停止运行。从前面的 STW 时间结论来看,运行时的字节码回滚(和修改机制相同)也会产生 STW,因此 RASP 将 hook 代码的逻辑开关关闭后,字节码依然留在业务类中,在清理完各种对象引用关系后,依然能够卸载 plugin 插件。
NOTE
基于此,应该是一种通用框架,只需要有一个拦截点,省下的都通过插件实现,不应该再走 transform, 而是对应的逻辑才对。