收藏本站
《复旦大学》 2010年
收藏 | 手机打开
二维码
手机客户端打开本文

Java程序优化与数据竞争检测的研究

杨克峤  
【摘要】:Java程序语言因其高效和安全性在不同的平台都得到了广泛应用,从服务端到移动电话平台,因此提供高效的Java优化编译器与运行系统有着重要的意义。为了发挥多核优势,多核机器的普及增加了对多线程程序的需求。Java作为第一个在语言级提供对多线程支持的编程语言,是一种被广泛使用的并行编程语言。然而多线程编程难度较大,程序员容易引入并发错误,如数据竞争、死锁等。论文关注了Java程序的两个热点问题:运行时性能和并发错误检测。 对于Java程序的运行时性能优化方面,论文基于Open64编译器构建了Java静态编译器Opencj,并基于Harmony DRLVM的运行时系统给出了动静态结合的编译优化框架。通过动静态结合的编译优化框架,尝试揉合动态优化与静态优化的各自优势进一步发掘优化空间,提高Java程序的运行时性能。Opencj读入Java的源程序或字节码,生成Linux/X86平台的可执行代码。Opencj完全继承了Open64的高效优化模块,并实现对Java异常机制的支持。Open64编译器采用一种树型结构的中间表示WHIRL。它能表示各种高级控制流结构,但不能显式的提供数据流信息。论文基于SSA(Static Single Assignment)对WHIRL进行扩展,提出一种新的优化结构WHIRL SSA。WHIRL SSA通过将SSA信息,包含版本信息、phi节点和别名访问的mu/chi节点,标注在WHIRL节点上,显式的为数据流分析提供使用-定义信息。WHIRL SSA是第一个同时包含了数据流和控制流信息、基于树结构高级中间表示的优化架构。论文讨论了基于WHIRL SSA的优化机会,并在该优化结构中实现了Java数组边界冗余检测的删除优化。优化的实现对科学计算类程序有着重要的意义。在NPB 3.0基准测试集的性能测试中,Opencj的静态优化性能比Sun JDK 1.6的性能平均快超过20倍。 对于Java多线程程序的并发错误检测方面,论文关注数据竞争错误的动态检测。静态检测技术固有的不精确性导致过多假的错误报告,给程序员带来繁重的验证开销;相反动态检测技术能够报告出真正的竞争错误。但动态检测执行被插桩的代码和记录访问历史信息引入了巨大的时间开销,这限制了动态数据竞争检测器的广泛使用。先前的研究工作通过调整检测粒度减少对面向对象程序动态数据竞争检测的开销。但他们只有两层粒度:对象层和域层。论文基于一种数据竞争错误模式会多次发生的现象,通过对象拥有关系提出了三层粒度的动态检测算法,进一步减小了动态检测开销。检测器在JVM的垃圾回收模块中构建对象拥有关系树,依据happens-before策略,开始只监控全局对象的拥有者对象,当有潜在数据竞争发生时,自动调小检测粒度。论文在同一个JVM中实现了4种粒度的检测算法,给出了相对公平的性能比较。Java程序的测试结果表明三层粒度的检测算法在没有减少检测精度的情况下,比域层粒度减少了平均3倍的检测开销。论文最后讨论了动静态结合的编译优化框架并对论文进行了总结与展望。 论文的主要贡献包括: ●给出了一个动静结合的编译优化框架,运用动静态编译优化技术的合力进一步发掘程序的优化空间 ●实现了一个Java静态优化编译器Opencj ●提出了一个新的基于高级中间表示的优化结构WHIRL SSA ●基于WHIRL SSA实现了数组边界冗余检查删除的优化 ●提出了三层粒度的动态数据竞争检测的算法
【学位授予单位】:复旦大学
【学位级别】:博士
【学位授予年份】:2010
【分类号】:TP311.10

【参考文献】
中国期刊全文数据库 前4条
1 吴萍;陈意云;张健;;多线程程序数据竞争的静态检测[J];计算机研究与发展;2006年02期
2 曹志伟;杨克峤;王伟;周寻;杨珉;;在静态编译器中实现Java异常机制的算法[J];计算机工程;2009年15期
3 章隆兵,张福新,吴少刚,陈意云;基于锁集合的动态数据竞争检测方法[J];计算机学报;2003年10期
4 闫大顺;姜淑娟;席景科;;一种异常处理机制的设计与实现[J];计算机工程与设计;2006年24期
【共引文献】
中国期刊全文数据库 前10条
1 刘玉璇;宫云战;杨朝红;;多线程故障分析及解决方法[J];北京化工大学学报(自然科学版);2007年S1期
2 马斌;韩中华;阎焕忠;张万江;;多线程串行技术在IC卡综合管理系统中的应用[J];低压电器;2007年24期
3 马红途;胡世安;苏彦兵;李迅;赵荣彩;;基于支配边界逆转的多变量Φ函数摆放算法[J];计算机研究与发展;2011年02期
4 韩伟;贺也平;;类Unix文件系统中TOCTTOU缺陷的静态分析方法[J];计算机研究与发展;2011年08期
5 霍玮;于洪涛;冯晓兵;张兆庆;;静态检测中断驱动程序的数据竞争[J];计算机研究与发展;2011年12期
6 郝闯;张志祥;张静波;;基于SUIF2的静态死锁检测方法研究[J];计算机与数字工程;2012年07期
7 刘淑华;;J2EE项目中一种新的错误处理方法[J];计算机应用与软件;2013年07期
8 宋东海;贲可荣;张志祥;;一种基于类的Java多线程程序数据竞争静态检测算法[J];计算机工程与科学;2014年02期
9 孔德光;谭小彬;奚宏生;帅建梅;宫涛;;多线程程序时序分析的隐Markov模型[J];软件学报;2010年03期
10 何倩;孟祥武;陈俊亮;沈筱彦;;并发计算重复问题与控制方法[J];软件学报;2011年10期
中国博士学位论文全文数据库 前4条
1 何倩;P2P系统性能优化若干关键技术研究[D];北京邮电大学;2010年
2 富浩;体系结构扩展支持的软件故障检测和定位技术研究[D];浙江大学;2009年
3 孔德光;结合语义的统计机器学习方法在代码安全中应用研究[D];中国科学技术大学;2010年
4 杨学红;BPEL流程的故障模式及其静态分析技术的研究[D];北京邮电大学;2011年
中国硕士学位论文全文数据库 前10条
1 谈飞;基于代码生成技术的自动化测试工具的设计与实现[D];华中科技大学;2010年
2 管西刚;轮胎均匀性试验机算法解算和控制方法的研究[D];青岛科技大学;2006年
3 王新雨;Java虚拟机异常机制及其实时性的研究与实现[D];江南大学;2008年
4 郝允允;增量式数据竞争检测[D];中国科学技术大学;2009年
5 胡委;基于逃逸分析的Java同步优化研究[D];浙江师范大学;2010年
6 张蕊;基于Concolic的Web动态页输出异常自动检测方法研究[D];南华大学;2010年
7 翁东良;基于二型模糊逻辑的死锁与数据竞争检测方法研究[D];苏州大学;2012年
8 左艳洁;安全关键软件中断缺陷分析工具的设计与实现[D];西安电子科技大学;2012年
9 许彦;基于PostgreSQL存储引擎的多线程化方法研究与实现[D];华中科技大学;2012年
10 简道红;多线程程序数据竞争静态检测方法研究[D];大连理工大学;2013年
【二级参考文献】
中国期刊全文数据库 前2条
1 丁宇新,程虎;Java虚拟机异常处理机制的设计与实现[J];计算机研究与发展;2000年05期
2 胡伟武,施巍松,唐志敏;基于新型Cache一致性协议的共享虚拟存储系统[J];计算机学报;1999年05期
【相似文献】
中国期刊全文数据库 前10条
1 William Robert Stanek ,严明;JavaScript的关注焦点[J];个人电脑;1997年08期
2 张怡;可视化Java开发工具一览[J];中国计算机用户;1997年25期
3 ;Java在运输业巨子——CSX公司中的应用[J];电子展望与决策;1998年05期
4 Jon Udell,邓立新;Java服务器小件[J];中文信息;1998年05期
5 吴限;意外的发现[J];中文信息;1998年Z1期
6 何芳;Java——大家的娃,有你无他怎兼容[J];中国计算机用户;1998年07期
7 ;旋转的咖啡杯[J];个人电脑;1999年04期
8 ;BEA收购TRGI旨在加强端到端Java教育[J];通信世界;1999年09期
9 ;微软的Java中发现安全漏洞[J];计算机与网络;1999年20期
10 黄凯;基于JAVA的CORBA程序[J];电子科技;2001年21期
中国重要会议论文全文数据库 前10条
1 姜久雷;;在Visual J++6.0环境下编写纯Java代码的方法[A];西部大开发 科教先行与可持续发展——中国科协2000年学术年会文集[C];2000年
2 蔡文鸿;陆以勤;;JAVA手机在我国发展面临的问题[A];第九届全国青年通信学术会议论文集[C];2004年
3 杨睿;金大海;宫云战;马跃;;JAVA中空指针引用故障的静态检测方法[A];第十四届全国容错计算学术会议(CFTC'2011)论文集[C];2011年
4 李镐炜;王跃科;赵健;;Java在测试系统接口中的应用[A];中国仪器仪表学会第三届青年学术会议论文集(下)[C];2001年
5 李永花;赵冰燕;王晶;;一种基于Java的数字签名方法[A];2011年中国气象学会气象通信与信息技术委员会暨国家气象信息中心科技年会论文摘要[C];2011年
6 唐焕春;;《Java程序设计》精品课程建设[A];2010无锡职教教师论坛论文集[C];2010年
7 阔永红;陈健;韩博凯;;基于Java的电话费查询系统的开发[A];中国电子学会第七届学术年会论文集[C];2001年
8 黄慧;刘波;翁得河;孙钰;万遂人;;基于java的脑肿瘤磁共振批处理数据工具的研发[A];中国生物医学工程学会成立30周年纪念大会暨2010中国生物医学工程学会学术大会青年优秀论文[C];2010年
9 淮永建;张先勇;郝重阳;;Java 3D API和虚拟现实[A];中国体视学学会图像分析专业、中国体视学学会仿真与虚拟现实专业、中国航空学会信号与信息处理专业第一届联合学术会议论文集[C];2000年
10 刘一童;;远程监控的Java实现[A];促进企业信息化进程——第九届中国Java技术及应用交流大会文集[C];2006年
中国重要报纸全文数据库 前10条
1 本报记者 方正;执Java发展之牛耳[N];网络世界;2003年
2 小寒;Java小档案[N];中国计算机报;2001年
3 广西 黄震;巧妙删除出错的Java游戏[N];电脑报;2004年
4 本报记者 李瀛寰;Java要唱主角[N];中国计算机报;2001年
5 ;Java的新目标[N];计算机世界;2000年
6 刘锬;Java用于嵌入式系统的十个优点和五个局限[N];计算机世界;2004年
7 刘基诚 雷厉风;Java的盛宴(下)[N];中华读书报;2005年
8 本报记者 李佳师;逐波无线与Web[N];中国电子报;2003年
9 刘磊;昔日Java斗士今日转投微软[N];中国计算机报;2005年
10 ;沃尔玛销售Java PC[N];计算机世界;2004年
中国博士学位论文全文数据库 前10条
1 杨克峤;Java程序优化与数据竞争检测的研究[D];复旦大学;2010年
2 杨学红;BPEL流程的故障模式及其静态分析技术的研究[D];北京邮电大学;2011年
3 陈虎;JE-Java芯片系统关键技术的研究与设计[D];中国人民解放军国防科学技术大学;2000年
4 胡光;硬Java实时嵌入式平台及其关键技术研究[D];复旦大学;2012年
5 陈文亮;基于Web的数控编程系统及其关键技术研究[D];南京航空航天大学;2001年
6 高国福;中国肿瘤防治数据库的建立[D];中国协和医科大学;2006年
7 祝玉华;基于Multi Agents的WebGIS的研究和实践[D];解放军信息工程大学;2004年
8 巩兰杰;基于人工股市建模的价格泡沫影响因素研究[D];天津大学;2008年
9 高宏卿;基于网格的远程教学研究[D];华东师范大学;2004年
10 陈永华;WebGIS三维可视化的研究[D];解放军信息工程大学;2000年
中国硕士学位论文全文数据库 前10条
1 朱静伟;基于JAVA/CORBA分布式数据库访问技术研究及实现[D];西安电子科技大学;2001年
2 雷昊峰;一种嵌入式Java虚拟机的性能优化技术设计与实现[D];电子科技大学;2003年
3 陈盈;图书管理EJB的构建和应用[D];大连铁道学院;2003年
4 沈忠山;基于MVC模式的WebGIS设计与实现[D];武汉大学;2004年
5 刘大龙;基于Java的物流仓储管理系统的构建[D];武汉纺织大学;2010年
6 皇甫俊彦;大型金融信息系统从C#到Java移植的研究和实现[D];浙江大学;2011年
7 张晓春;基于Java的测井数据格式解编系统的设计与实现[D];吉林大学;2011年
8 张自然;基于JAVA/CORBA的WWW分布式电子商务系统研究[D];华中师范大学;2002年
9 赵斗生;基于网络新技术的PDM研究[D];机械科学研究院;2002年
10 杜欣然;利用JSP技术开发基于WEB的人事工资管理系统[D];大连铁道学院;2003年
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62791813
  • 010-62985026