发明名称 基于地址链的内存垃圾收集器中对象状态的跟踪记录方法
摘要 本发明提供了一种基于地址链的内存垃圾收集器中对象状态的跟踪记录方法,应用于编译器软件和运行时系统技术领域。本发明方法针对内存垃圾收集器中发生新增对象、访问对象、移动对象或释放对象不同事件时,在地址链表中记录不同内容的信息项,然后根据各信息项,为每个对象生成一个状态链,状态链包含对象的程序分配地址、访问时间、释放时间以及一个有序的地址序列。本发明方法实现对内存中所有对象的状态进行跟踪记录,根据记录可以找出长期占用内存而不释放的对象,进一步对这些对象程序进行优化,从而提高内存的整体使用效率和程序运行的可靠性。
申请公布号 CN103218303A 申请公布日期 2013.07.24
申请号 CN201310102263.9 申请日期 2013.03.27
申请人 北京航空航天大学 发明人 史晓华;谢君如;孙清越;杨海燕
分类号 G06F12/02(2006.01)I;G06F11/34(2006.01)I 主分类号 G06F12/02(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 周长琪
主权项 一种基于地址链的内存垃圾收集器中对象状态的跟踪记录方法,其特征在于,包括如下步骤:步骤1:在内存垃圾收集器中发生新增对象、访问对象、移动对象或释放对象的事件时,在地址链表中增加新的信息项;在新增对象时,地址链表中增加新的信息项<程序分配地址,对象分配地址>;在访问对象时,地址链表中增加新的信息项<对象当前地址,访问时间>;在移动对象时,地址链表中增加新的信息项<对象移动前地址,对象移动后地址>;在释放对象时,地址链表中增加新的信息项<对象当前地址,释放时间>;步骤2:根据获得的地址链表,生成记录对象状态信息的对象状态链表;对于每个对象,在对象状态链表中都对应生成一个状态链,状态链的首项为对象名称,状态链还包含对象的程序分配地址、访问时间、释放时间以及一个有序的地址序列;顺序依次访问地址链表中的每个信息项,根据信息项的内容,更新对象状态链表:(1)若该信息项中记录了<程序分配地址,对象分配地址>,则在对象状态链表中为该信息项所记录的对象生成一个状态链,在该状态链中记录程序分配地址,在该状态链的当前的地址序列的最后新增一个地址,该地址记录信息项中的“对象分配地址”;(2)若该信息项中记录了<对象当前地址,访问时间>,则在对象状态链表中逆序依次查找各状态链,寻找状态链中的地址序列的最后一个地址等同信息项中的“对象当前地址”的状态链,然后在找到的状态链中记录访问时间;(3)若该信息项中记录了<对象移动前地址,对象移动后地址>,则在对象状态链表中逆序依次查找各状态链,寻找状态链中的地址序列的最后一个地址等同信息项中的“对象移动前地址”的状态链,然后在找到的状态链的地址序列中的最后新增一个地址,该地址记录信息项中的“对象移动后地址”;(4)若该信息项中记录了<对象当前地址,释放时间>,则在对象状态链表中逆序依次查找各状态链,寻找状态链的地址序列中的最后一个地址等同信息项中的“对象当前地址”的状态链,然后在找到的状态链中记录“释放时间”,并今后不再对该状态链进行记录和查找。
地址 100191 北京市海淀区学院路37号