发明名称 |
高效地标记带有大引用集的对象 |
摘要 |
将对对象的引用添加到标记栈。对带有大量对象引用的对象所引用的对象的有限数量的引用被添加到栈中。访问对象。做出应该结合指针使用标记栈中的对对象的引用将对象中的引用添加到标记栈的判定。使用指针来跟踪对象中的哪些引用已经被放置在标记栈上。访问标记栈上的对对象的引用。初始化指针。对对象所引用的另一对象的引用被压到标记栈上。递增指针。然后判定应该将更多的引用压到标记栈。重复将引用压到标记栈上以及递增指针的动作。 |
申请公布号 |
CN102016788B |
申请公布日期 |
2013.07.17 |
申请号 |
CN200980114688.3 |
申请日期 |
2009.03.06 |
申请人 |
微软公司 |
发明人 |
P·H·杜斯德;M·Z·斯蒂芬斯 |
分类号 |
G06F9/00(2006.01)I;G06F9/44(2006.01)I;G06F3/03(2006.01)I;G06F3/00(2006.01)I |
主分类号 |
G06F9/00(2006.01)I |
代理机构 |
上海专利商标事务所有限公司 31100 |
代理人 |
蔡悦;钱静芳 |
主权项 |
一种在包括实现用于回收存储器的无用信息收集功能的应用程序代码的计算环境中的方法,其中所述无用信息收集功能包括将对象引用压到标记栈上,所述方法按照允许对带有大量对象引用的对象所引用的对象的有限数量的引用被添加到所述标记栈的方式将对对象的引用添加到所述标记栈,所述方法包括:(a)访问对象;(b)判定所述对象包括多个对一个或多个其它对象的引用,如果所述引用全部都被压到标记栈上,所述其它对象将超出所述标记栈的可用空间,因此只有所述对象中的引用的一个子集被添加到所述标记栈;(c)将所述对对象的引用与指针一起压到所述标记栈上,所述指针用于跟踪所述对象中的哪些引用已经被压到所述标记栈上,所述标记栈被配置成允许标记被压到所述标记栈上的对象来阻止用于所述标记栈上所引用的对象的存储器被回收以供其他对象使用;(d)访问所述标记栈上对所述对象的引用;(e)初始化所述指针;(f)将对所述对象中的所述引用中的一个或多个压到所述标记栈上;以及(g)更新所述指针以追踪所述对象中的哪些引用已被压到所述标记栈上。 |
地址 |
美国华盛顿州 |