这似乎是一个简单的问题,但是在对该主题进行了大量阅读之后,我仍然没有找到明确的答案(也许是因为它是如此简单)。
我的问题是:当垃圾收集器压缩堆中的对象时,如何更新对堆栈中那些对象的引用?我可以想到两种可能的解决方案:
- 遍历堆栈(和堆中的引用)并更新引用以指向对象的新位置。类似于搬家,这就像给有您地址的任何人发送一封信,并要求他们用您的新地址更新他们的地址簿。
- 提供某种查找表。这就像在本地邮局留下转发地址。
垃圾收集器是否主要使用这两种方法之一?还有其他方法吗?都?
参见stackoverflow.com/questions/3799203/…和en.wikipedia.org/wiki/…–
—
弄乱了机器人
如果我错了,@ StevenBurnap会纠正我,但我认为您链接到的线程没有任何明确的答案。他们似乎也在猜测这个确切的问题。我可能读错了。如果他们确实提供了问题的答案,如果您不介意的话,我认为在这里为将来的SE用户(和我自己)总结答案会有所帮助
—
todorojo 2013年
您所谈论的事物的术语是“移动的垃圾收集器”。坦白地说,我不知道它们的使用频率。
—
在