Java程序的对象单赋值分析

来源 :复旦大学 | 被引量 : 0次 | 上传用户:guidahuasheng
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着对多核技术的深入研究与多核体系结构的广泛应用,多线程程序的开发与维护问题越来越引起人们的重视。其中,多线程程序运行时对内存访问顺序的不确定性常为程序带来数据竞争、死锁等问题。由于上述程序错误发生的不确定性,以及程序出错的位置与引发错误的具体原因往往没有直接关系,所以对多线程程序错误的检测与排除变得非常困难。对于由多线程程序运行时的不确定性引发的问题,学术界提出了多种例如数据竞争检测、确定性回放等方法用于检测与排错。但是,这些方法都面临着相同的性能瓶颈。数据竞争检测算法一般会引入2x~10x的额外运行开销,而确定性回放系统平均额外开销可达10x~100x。巨大的性能开销阻碍了这些方法的广泛应用。数据竞争检测算法与确定性回放算法的主要性能开销来自对程序内存访问的监控:动态数据竞争检测算法需要对程序的内存访问进行监控以找出运行时的数据竞争错误;确定性回放算法需要记录不同线程对内存访问的顺序来确定性的重现程序运行。因此,如何减少上述系统在内存监控上的开销是系统设计者面临的一个共同问题。在多线程应用程序中中存在着大量只被赋值一次的对象。这类对象首先被某个线程写操作赋值,之后被多线程只读访问。我们称这类对象为单赋值对象。虽然单赋值对象在程序运行的生命周期中能够被多个线程访问,但是除第一次的赋值写访问之外,其他访问均为读操作,所以,对单赋值对象的内存访问不需要被数据竞争、确定性回放等系统监控。实验数据表明,单赋值对象内存访问在实际内存访问中占很大比例。分析找出单赋值对象并去除对单赋值对象的内存访问监控可以进一步提高数据竞争检测、确定性回放等系统的性能,从而扩展此类方法的应用范围。本文首先指出了单赋值对象这一问题对数据竞争检测、确定性回放等系统的性能影响,并通过对多个多线程程序测试集的测试证明了单赋值对象内存访问在程序内存访问中占很大比例;然后给出了单赋值对象的形式化定义,并根据这一定义设计了一种基于静态分析的对象单赋值分析算法;最后将这一算法实现在Java语言上,对Java程序字节码进行对象单赋值分析,并将算法的分析结果应用到多种成熟的数据竞争检测系统和一个确定性回放系统中。测试数据表明使用对象单赋值分析算法的分析结果可以有效减少数据竞争检测、确定性回放系统的运行开销,从而扩展系统应用场景。论文的主要贡献包括:·提出了多线程程序运行中存在的单赋值对象问题,并对单赋值对象做出了形式化的定义;·使用静态分析方法构建了对象单赋值分析算法;·将对象单赋值分析算法的分析结果分别应用在基于LockS et、HappenBefor算法的数据竞争检测系统和一个确定性回放系统中,分别减少了39%、75%和62%的额外开销。
其他文献
目的对后牙牙冠斜折至龈下3~5 mm的患牙进行改良冠延长术后修复的效果进行评价,以探索有效的保存较深牙冠斜折后牙的方法。方法选择因咬合劈裂斜折达龈下3~5 mm、松动度(MD)
SBS是目前世界上应用最为普遍的道路沥青改性剂,由苯乙烯、丁二烯嵌段聚合组成,在低于聚苯乙烯组成的玻璃化转变温度时是强韧的高弹性材料,而在较高温度下,又成为接近线形聚
目的观察外伤致龈下根折前牙正畸牵引加桩冠修复的治疗效果。方法选择30例断端位于龈下3 mm以上的外伤前牙进行正畸牵引至龈上1 mm后行桩冠修复,分别于修复后3个月、6个月及1
本文报道了福建省范围内前人分析数据稀疏或空白区域内的18个古生代-中生代花岗岩体的Nd、Sr同位素组成:εNd(t)=-3.6~-16.4,(87Sr/86Sr)i=0.7055~0.7318,tDM=1.2~2.3Ga。结合前人分析数据,区分出三个地域区带:福安-南靖断裂以东的沿海带:εNd(t)=-1.5~-6.8,(87Sr/86Sr)i=0.7056~0.7099,tDM=1.1~1.45Ga,弧后伸展
以鼓山-魁岐、青田和普陀山-桃花岛三个典型岩体为例,系统研究了浙闽沿海I型-A型复合花岗岩体的地质和地球化学特征。研究结果表明:复合岩体中I型与A型花岗岩在主量、微量和稀土元素特
目的:探讨以问题为中心(PBL,Problem-Based Learn)教学法用于医患沟通理论课教学的可行性和必要性。方法:分别使用传统讲授式和PBL教学法进行医患沟通理论课教学,利用授课教
聚丙烯(PP)是碳氢类材料,极易燃烧,这限制了其广泛应用。目前,阻燃的主要方法是在PP中添加阻燃剂。鉴于对环境保护的要求,无卤阻燃PP已成为当前的研究热点。但无卤阻燃剂的添加
进入二十一世纪以来,人们对企业的期望,已经不仅限于经济以及法律的要求,人们更希望企业能有效地承担起一系列社会问题上的责任和义务。很多西方国家,企业社会责任管理已经上
Java程序语言因其高效和安全性在不同的平台都得到了广泛应用,从服务端到移动电话平台,因此提供高效的Java优化编译器与运行系统有着重要的意义。为了发挥多核优势,多核机器
近年来,陕西省高速公路发展速度异常迅猛,取得的成绩有目共睹。但由于沥青路面结构设计理论不完善、路面交通量不断增大,一些沥青路面较早地出现了一系列功能性和结构性破坏,