Java程序内存使用分析技术研究

来源 :中国矿业大学 | 被引量 : 0次 | 上传用户:wzhl512
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
伴随着计算机技术的快速发展,计算机软件所解决的问题日益复杂,软件的功能、结构和行为的复杂性不断增加,使得大规模框架密集型应用程序得到广泛应用。这些应用程序通常结合了标准类库和特定领域的第三方框架。虽然类库和框架的使用简化了开发工作,但调用这些类库和框架的通用API的代价可能是非常昂贵的。程序员在软件开发过程中往往过多关注于系统的功能实现,忽视对程序进行优化设计,并将性能优化的任务交给运行时系统,导致因不合理的内存使用所导致的内存问题在软件中广泛存在。软件复杂性的增加对软件分析和测试过程中理解软件的内存行为和检测内存使用问题提出了新的挑战。对于现代软件系统而言,如何快速理解软件的内存行为,准确检测出软件中的内存使用问题对于保证软件质量具有重要意义。目前,软件内存使用分析已经在国内外被大量学者广泛研究:一方面,通过程序分析技术研究程序中各个数据结构之间的依赖关系,借助这些信息识别程序中的不合理的设计;另一方面,通过充分的测试用例测试获取足量的动态执行信息,对程序的执行信息采用特征分析或统计分析的方法研究程序的内存使用。但是,已有的这些方法依然存在一些问题。主要表现在:(1)资源开销较大。Java程序执行过程中涉及大量对象的创建和使用,包含复杂的对象引用关系,使得一些方法在内存使用分析过程中需要大量的资源开销;(2)提供的诊断信息有限。一些方法的诊断信息只能提供与内存使用相关的类级别信息,诊断信息较为抽象。此外,检测报告缺乏与问题相关的上下文信息,难以辅助调试人员进行问题理解和问题修复;(3)诊断结果的准确性有待提高。已有研究方法往往通过内存使用问题的某一特征点进行问题的识别,检测结果的准确性和有效性较低。针对以上问题,本文进行了以下两个方面的研究:(1)设计了一种基于对象引用关系的Java程序内存行为分析方法。与传统的依据内存消耗的大小确定程序中数据结构的重要性并分析相关内存行为的方法不同,该方法同时考虑内存消耗和内存支配两个因素来确定一个数据结构在程序内存行为中的重要性,通过研究数据结构之间在内存使用上的支配关系和对数据结构进行引用分析,得到程序中重要的内存行为。实验结果表明该方法对程序中重要内存行为的分析具备良好的效果。(2)设计了一种基于内存使用传播分析的Java内存低效使用检测方法。与原有的通过检测程序中消耗内存较多的数据结构并分析其内存使用合理性的方法不同,该方法首先获取程序执行过程中的内存使用信息,并将其抽象为内存使用传播图(Memory Usage Propagation Graph,MUPG),以此提供程序完整的内存行为;其次通过对MUPG包含的内存使用信息进行特征分析识别,检测和确定程序中的内存低效使用问题;最后依据MUPG提供的上下文路径信息分析导致问题产生的根本原因。实验结果表明该方法在内存低效使用问题检测上具有较好的效果。本课题设计了两种程序内存使用分析技术以帮助软件开发人员对Java程序的内存使用进行分析,揭示潜在的内存低效使用问题,并找出导致这些问题产生的根源。虽然这些技术的实现都是针对Java程序进行,但我们相信提供的技术也能适用于其它面向对象语言编写的系统。
其他文献
<正>今年恰逢新中国成立70周年,五四运动100周年。百年光影,一代代青年将青春和智慧献给祖国,用不朽的奋斗精神书写着人生华章;时光荏苒,追梦路上我们共怀五四精神,新时代我
针对联合战术信息分发系统(JTIDS)物理层传输波形建立了MATLAB仿真模型,并对其抗白噪声干扰、单频或阻塞式干扰,以及组网的性能进行了仿真和分析,为JTIDS系统抗干扰技术的研究
用10%膨化双低菜籽配制的高能哺乳母猪料可使哺乳母猪泌乳力显著提高,有效降低母猪哺乳期体重损失。膨化双低菜籽型饲粮组仔猪窝增重比普通饲粮组显著提高10.4%,优于膨化大豆
介绍宝源公寓全现浇剪力墙饰面清水混凝土施工技术,以低成本、高品质为目标,采取有效的技术措施,进行模板细部节点处理以及施工工艺改进,使质量达到高标准。
建立燃烧福建无烟煤循环流化床锅炉炉内脱硫的二步法反应模型,并与一步法反应模型进行比较。计算发现,模型的预测结果与工业实际运行测量数据基本吻合,能够反应脱硫效率随钙硫比
<正>目的:应用营养不良风险调查(NRS)对炎症性肠病(inflammatory bowel disease IBD)患者进行营养不良风险评估。方法:自2008年1月至2009年1月,收集北京协和医院消化科门诊及
会议
针对某型导弹多总线地面测试设备传输数据量大、传输速度高的要求,设计了一种基于乒乓操作的SDRAM控制器作为测试设备数据缓存器。详细介绍了以FPGA为主控器的设计方案,包括S