在线子路径分析与精确异常语义在动态编译中的应用
在线子路径分析
在线子路径分析(Online Subpath Profiling)是一种基于自适应采样技术的高效分析方法。通过对Java程序的测试,其原型实现展示了一定的有效性。
分析结果与问题
在实际分析中,结果存在较多噪声,最热门的子路径采样次数不超过3次。尽管如此,这些结果仍可接受,最热门的子路径与路径长度限制为2n时得到的结果相对应。不过,由于采样次数较低,结果大概率不够准确。因此,运行任意路径长度的OSP算法需要更大的采样概率和更多的内存开销,以确保路径采样频率足够高,使分析结果有意义。
相关工作
- Ball - Larus路径分析算法 :最初记录过程内无环路径的执行频率,程序在执行时为每个路径生成唯一标识符。
- Ammons、Ball和Larus的扩展 :将硬件指标与路径关联,并引入运行时数据结构来近似过程间路径,但实践中这些关联不够精确,且无法跨循环迭代连接路径。
- Melski和Reps的方法 :该技术中的路径不跨越循环,过程间路径静态分配唯一标识符。
- Larus的全程序路径方法 :捕获程序动态行为的完整画面,全程序路径跨越循环和过程边界,为过程间路径分析提供了实用基础。但由于其数据量可能很大,需要进行压缩,通过将其表示为语法实现。该方法需要数据收集和分析两个阶段,因此不能被JIT编译器在程序执行期间用于定位热门子路径。