Java指针分析综述谭添1,2马晓星1,2许畅1,2马春燕3李樾1,21(南京大学计算机科学与技术系南京210023)2(计算机软件新技术国家重点实验室(南京大学)南京210023)3(西北工业大学软件学院西安710129)(tiantan@nju.edu.cn)SurveyonJavaPointerAnalysisTanTian1,2,MaXiaoxing1,2,XuChang1,2,MaChunyan3,andLiYue1,21(DepartmentofComputerScienceandTechnology,NanjingUniversity,Nanjing210023)2(NationalKeyLaboratoryforNovelSoftwareTechnology(NanjingUniversity),Nanjing210023)3(SchoolofSoftware,NorthwesternPolytechnicalUniversity,Xi’an710129)AbstractInrecentyears,staticprogramanalysishasbecomeoneofthekeytechniquestoensurethereliability,securityandefficiencyofsoftware.Asafundamentalprogramanalysistechnique,pointeranalysisprovidesaseriesoffundamentalinformationabouttheprogramforstaticprogramanalysis,suchasthepoints-torelationsofanyvariablesintheprogram,aliasrelationsbetweenvariables,programcallgraph,andthereachabilityofheapobjects.WeintroducetheimportantcontentsofJavapointeranalysis,includingpointeranalysisalgorithm,contextsensitivity,abstractionofheapobjects,handlingofcomplexlanguagefeatures,non-wholeprogrampointeranalysis,especiallywesort-outanddiscussselectivecontextsensitivity,whichistheresearchhotspotofpointeranalysisinrecentyears.Keywordspointeranalysis;aliasanalysis;Java;staticanalysis;contextsensitivity摘要近年来静态程序分析已成为保障软件可靠性、安全性和高效性的关键技术之一.指针分析作为基础程序分析技术为静态程序分析提供关于程序的一系列基础信息,例如程序任意变量的指向关系、变量间的别名关系、程序调用图、堆对象的可达性等.介绍了Java指针分析的重要内容:指针分析算法、上下文敏感、堆对象抽象、复杂语言特性处理、非全程序指针分析,特别是对近年来指针分析的研究热点选择性上下文敏感技术进行了梳理和讨论.关键词指针分析;别名分析;Java;静态分析;上下文敏感中图法分类号TP311指针分析(pointeranalysis),又称指向分析(points-toanalysis)或别名分析(aliasanalysis),是计算程序中的指针(或变量、引用)在运行时所能指向的内存位置(或对象)的一种静态程序分析技术.指针分析的结果通常可表示为指针与内存位置...