随着运行在服务器端受管理运行时系统(Managed Runtime)上的大型J2EE和.NET软件得到越来越广泛的应用,此类软件在长期无人值守的运行过程中所产生的内存泄漏问题也越来越突出。此类内存泄漏问题不同于传统的内存泄漏问题,现有内存垃圾收集的理论和方法无法处理和解决,给软件运行的可靠性带来了新的重大威胁,并导致软件开发和测试成本的急剧增加。本课题将研究如何拓展现有活动对象的定义,研究建立一种新的基于"冷对象"的内存对象管理模型,在理论上分析这一新的内存泄漏问题并探索解决方法;本课题将研究如何结合程序语义,在统计模型和启发式算法的支持下,在程序运行过程中对冷对象进行动态预测和甄别;本课题将研究如何在保证程序原有语义的前提下,对冷对象进行自适应管理。本课题的研究方向在理论和实现上获得有效突破后,将可以显著提高服务器端软件的运行可靠性,降低开发测试成本,具有较高的学术价值和广泛的应用前景。
Cold Object;Memory Leak;Managed Runtime System;;
随着运行在服务器端受管理运行时系统(Managed Runtime)上的大型J2EE和.NET软件得到越来越广泛的应用,此类软件在长期无人值守的运行过程中所产生的内存泄漏问题也越来越突出。此类内存泄漏问题不同于传统的内存泄露问题,现有内存垃圾收集的理论和方法无法处理和解决,给软件运行的可靠性带来了新的重大威胁,并导致软件开发和测试成本的急剧增加。针对以上问题,本课题主要完成以下科研成果 1)一种独创的,高效的基于地址链的对Java冷对象的扫描监控机制。该方法基于一种独创的基于“地址链”的对象轨迹跟踪和标识机制,在不修改Java虚拟机中对象内存布局相关的结构体的情况下,仅通过修改部分Java虚拟机代码,即可在Java程序运行时将对象的物理地址移动轨迹记录并传输到数据接收节点之上,并可以同时记录其他感兴趣的信息,例如对象分配地址等;而在数据接收节点上,通过运行对象信息整理程序可以重建对象地址链,统计出对象的生命周期等信息。这种方法不会增加Java堆的负载,可以方便的调整获取对象信息的种类,且可以适用于各种不同类型的垃圾回收算法,具有良好的扩展性和兼容性。 2)在开源虚拟机实现Harmony的基础上,通过改造其中的内存垃圾收集模块GC,实现了一个对JVM内存堆中所有对象进行在线监控的系统。该系统可以在JVM运行过程中对所有对象,包括申请和已释放的对象,进行在线监控,从对象的生存周期和移动轨迹出发,界定出冷对象的范围。 3)一种独创的,Java冷对象的增量式扫描监控机制。增量式扫描机制利用对象在垃圾回收过程中存在的不同状态,动态的扫描内存堆对象,增量记录其状态变化,最终可以获得远超过对内存堆进行全面扫描的运行效率。 4)面向异构多核平台的内存对象访问监测及优化方法的研究和实现,等。截止2013年12月,实际在国外重要期刊发表SCI论文3篇,平均影响因子大于1.19(最高1.834,最低0.821);另发表EI索引的国内重要期刊论文和EI/ISTP索引的CCF-C类重要国际论文共计5篇(期刊2篇,CCF-C类国际会议3篇);申请6项发明专利。此外,还有2篇论文已分别向CCF-B类的重要期刊和会议投出。