Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

一种基于逃逸分析的对象生命期分析方法 PDF 下载


分享到:
时间:2021-07-08 08:09来源:http://www.java1234.com 作者:转载  侵权举报
一种基于逃逸分析的对象生命期分析方法 PDF 下载
失效链接处理
一种基于逃逸分析的对象生命期分析方法 PDF 下载


本站整理下载:
提取码:qp90 
 
 
相关截图:
 
主要内容:
2.3 结点的属性(Properties)
我们给连接图 CG 中的结点 p 赋予一些基本属性,并通过传播算法在 CG 上计算属性值。
2.3.1 基本属性
1) 结点 p 的逃逸状态属性 Escape(p) 
∀ p∈N,p 的逃逸状态属性 Escape (p)∈EscState,表示 p 的逃逸状态可能是 Escape (p)。这里 EscState
为逃逸状态集合,它是一个格:No_Field_Escape≺ Field_Escape≺ Global_Escape。其中,Global_Escape
表示全局逃逸状态,具有该状态的对象是全局共享对象,可被多个线程访问,其生命期跨越整个程序
的执行期间;No_Field_Escape 和 Field_Escape 则分别表示两类非全局逃逸状态,具有这两类状态之一
的对象是只能被一个线程访问的非全局共享的对象,二者区别在于:No_Field_Escape 状态的对象不被
任何对象的域引用,而 Field_Escape 状态的对象被存入到非全局共享对象的某个非静态域中。我们的
分析将识别这三类对象,并进一步分析 No_Field_Escape 或 Field_Escape 状态的对象的生命期。
2) 结点 p 的分配点属性 Sites(p) 
假设 AS 是程序中所有对象分配点的集合。∀ p∈N,p 的分配点属性 Sites(p) ⊆ AS∪{UNKNOWN},
表示结点 p 引用的对象可能的分配点集合。UNKNOWN 表示结点对应的对象分配点是未知的,如在过
程内分析时,Phantom 中的结点所对应的对象分配点是不明确的。
3) 结点 p 的来源属性 Source(p) 
∀ p∈Naa∪Nret,p 的分配点属性 Source(p) ⊆ {s | s∈Nfa∪Ndst},表示结点 p 引用的对象是由哪些结
点传递过来的。p 结点表示方法内某调用点的实参或方法的返回值,而 Source(p)则表示 p 通过连接图
上的边可达的形参类结点(Nfa)或返回值接收者类结点(Ndst)的集合。该属性将在过程间的分析算
法中用于连接图结点属性的局部更新。 
4) 结点 p 的类型信息属性 Type(p) 
假设 TYPE 是程序中所有对象类型的集合。∀ p∈N,p 的类型信息属性 Type(p) ∈TYPE,表示结点
p 引用的对象的类型信息。由于多态的存在,在没有方法调用图的情况下,对方法调用点处实际调用
方法的确定需要依靠该属性所提供的信息。
5) 域引用图 RefsMap
假设 FIELD 是所有对象非静态域的集合。域引用图 RefsMap ⊆ AS×FIELD×AS, 反映的是程序中
对象之间的域引用关系。三元组<x, fd, y>∈RefsMap 表示分配点 x 处对象的域 fd 引用了分配点 y 处的
对象。该图用于辅助对 Field_Escape 状态的对象的生命期分析。
2.3.2 基本属性的扩展
为了计算上的方便,我们对基本属性 Source 进行扩展,该属性重定义为:
∀ p∈N,则有 Source(p) ⊆ {s | s∈Nfa∪Ndst}。
2.3.3 扩展后属性上的合并操作
连接图上的传播算法将会对结点扩展后
的属性进行一些合并操作。
定义 3 (属性合并操作 combine). 假设连
接图中存在边<x,y>(或<y,x>),对 x 进行属性
合并操作 combine(x, y)规则如图 1 所示。
对于结点 x 而言,combine(x,y)操作是将结
点 x 中各类属性有选择地进行重新赋值,而结
点 y 的任何属性值仍保持不变。规则(1-1)表示
Escape(x)属性在合并之后具有原 Escape(x)和
Escape(y)二值中的最保守者;规则(1-2)和规则
, ( ), ( )
( ): 
st EscState st Escape y Escape x st
Escape x st
∈ =
= ≺ (1-1)
, ( ), ( ) {UNKNOWN}
( ):
as AS as Sites y Sites x
Sites x as
⊆= =
= (1-2)
, ( ), ( ) {UNKNOWN}
( ): ( )
as AS as Sites y Sites x
Sites x Sites x as
⊆= ≠
= ∪ (1-3)
( ): ( ) ( )
r y N
Source x Source x Source y
= ∪ (1-4)
( ) is sub-type of ( )
( ): ( )
Type y Type x
Type x Type y = (1-5)
图 1 属性合并操作的规则
 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐