检查点并在Ruby中恢复堆

Gow*_*aki 8 ruby garbage-collection callcc

Ruby callcc捕获当前的延续,随后可以调用它来恢复控件,但不能恢复数据.我想捕获当前的延续以及当前的内存图像.

在我看来,抓住堆应该不是很困难; 我可以依靠ObjectSpace::each_objectObjectSpace::dump_all,或Marshal.dump,或简单地Object.clone.但是,我没有看到任何简单的方法来恢复堆.理想情况下,我想遍历object_id -> object 地图,为每个地图恢复对象的旧图像object_id(object_id如果相应的对象已经过GC ,则重新添加).不出所料,没有Ruby级别的api可以让我这样做.我想知道是否有任何我可以使用的Ruby GC的低级钩子.

任何帮助表示赞赏,包括有关替代方法的建议.

小智 0

将每个推入堆栈怎么样?然后你可以继续从堆栈中弹出来检索数据。

https://github.com/bvsatyaram/Ruby-Data-Structures