论文部分内容阅读
根据AppFigures统计数据表明,2014年谷歌应用商店的应用和开发者数量,首次双双超过苹果应用商店,谷歌应用商店应用总量已达143万款。在近几年内,Android的市场份额持续走高。但是,许多Android应用程序在实际应用过程中遭受内存泄露问题的困扰。应用程序的内存泄露是一个逐渐累积的过程,如果不能及时发现将导致严重后果,比如应用程序OOM崩溃,这将给使用者带来巨大的损失。针对目前Android应用程序内存泄露检测方法的研究现状,结合Android应用程序中两种主要内存泄露机制:Activity缺陷;资源对象未关闭缺陷,文章中提出了一个Android内存泄露检测模型:Q-R模型。“Q”模型通过对程序中的引用类型进行分析可以识别Activity缺陷代码,而“R”模型通过使用memory_rise内存增长模型可以识别资源对象未关闭导致的内存缺陷。Q-R模型中使用了三种关键技术:关键词匹配;依赖识别;指向识别。利用这三种关键技术可以解决识别过程中的关键词特征匹配、依赖指向分析、上下文关系分析等问题。而后,利用Q-R模型,本文设计实现了基于Q-R模型的SneakFinder漏洞检测系统,SneakFinder漏洞检测系统有三个核心模块:GapMonitor监测模块,用于实时监测内存泄露的发生;Detail Analyzer分析模块,分析泄露类型,得出关于泄露点的详细信息;Feedback回馈模块,用于将检测结果回馈给用户。最后,使用SneakFinder漏洞检测系统将Q-R模型的理论与实际结合起来,在PC端和Android移动终端进行实验,测试SneakFinder是否能及时有效的汇报系统中的内存泄露问题,并以正确率、误报率和漏报率作为评价标准,对基于Q-R模型的Android内存泄露检测系统SneakFinder与Android内存分析工具MAT进行比较实验。实验结果表明,基于Q-R模型的SneakFinder泄露检测系统可以有效的检测出Android应用程序的内存泄露情况,SneakFinder不仅可以检测出应用程序中已知的内存漏洞,在检测某些应用程序时,还可以检测出尚未被测试开发者发现的内存漏洞,并能有效降低检测误报率与漏报率,提高检测效率。实验证明,基于Q-R模型的SneakFinder泄露检测系统能够在Android应用程序开发过程中提供很大的帮助与支持。