逃逸分析 在编译程序优化理论中逃逸分析是一种确定指针动态范围的方法分析在程序的哪些地方可以访问到指针它涉及到指针分析和形状分析 当一个变量或对象在子程序中被分配时一个指向变量的指针可能逃逸到其它执行线程中或是返回到调用者子程序如果使用尾递归优化通常在函数编程语言中是需要的对象也可以看作逃逸到被调用的子程序中如果一种语言支持第一类型的续体在Scheme和新泽西Standard ML中同样如此部分调用栈也可能发生逃逸 如果一个子程序分配一个对象并返回一个该对象的指针该对象可能在程序中被访问到的地方无法确定这样指针就成功逃逸了如果指针存储在全局变量或者其它数据结构中因为全局变量是可以在当前子程序之外访问的此时指针也发生了逃逸 逃逸分析确定某个指针可以存储的所有地方以及确定能否保证指针的生命周期只在当前进程或线程中