Buben:自动化库抽象技术解析
1. 动态分析实现
动态分析是基于 Java 平台的 JPDA 框架实现的。具体使用了 JPDA 的两个组件:JVM TI 监控接口和 JDI 前端 API。
1.1 JPDA 的优势
- 全面的运行时信息 :通过其 API 提供程序运行时行为和状态的所有必要信息,包括方法入口的调用参数和方法退出的返回值,还支持跟踪对本地方法的调用。
- 数据结构检查 :允许检查堆数据结构、动态调用栈和程序变量(对象字段、数组元素)的运行时值,这是一些基于代码插桩的动态分析框架难以实现的。
1.2 性能优化
通过将方法入口(调用)事件和方法退出(返回)事件的跟踪分离,能显著减少基于 JVM TI 的动态分析的性能开销。具体操作是在一次动态分析运行中跟踪所有方法入口事件,在另一次独立运行中跟踪所有方法退出事件。
1.3 返回值数量限制
为了将动态摘要的大小控制在实际可行的范围内,对库方法可能记录的不同返回值数量设置了上限。例如,对于像 System.getCurrentTimeMillis 这样在程序运行中多次调用且每次返回不同值的系统库方法,实验中设置上限为 256,该值可配置。
2. 方法摘要的静态计算
2.1 摘要内容定义
静态方法摘要被定义为一种数据结构,包含以下内容:
- 方法中可能更新的所有对象字段列表。
- 所有可能更新的静态
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



