保存堆栈?

时间:2012-12-10 20:51:59

标签: python ruby jvm stack

我只是好奇,是否可以将程序的所有变量和当前状态转储到文件中,然后在另一台计算机上恢复它?! 假设我在Python或Ruby中有一个小程序,给定一定条件,它会将所有当前变量和当前状态转储到文件中。
之后,我可以在另一台机器上重新加载它,并返回它 类似VM快照功能的东西 我在这里看到过这样的问题,但Java相关,保存当前的JVM并在不同的JVM中再次运行它。大多数人都说没有这样的东西,只有兵马俑有一些东西,但仍然不完美。 谢谢。

澄清我想要实现的目标:
鉴于2个或更多Raspberry Pi,我正在尝试在Pinº1上运行我的软件,但是当我需要做一些不同的事情时,我需要将软件移动到没有数据的Pinº2,只需要很短的休息时间。
等等,无限数量的机器。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

好问题。

在Smalltalk,是的。

实际上,在Smalltalk中,转储整个程序并重新启动是唯一方式来存储和共享程序。没有源文件,也没有办法从方块零启动程序。所以在Smalltalk你可以免费获得你的功能。

Smalltalk VM提供了一个钩子,每个对象可以在重新启动后注册以恢复其外部资源,如重新打开文件和Internet连接。但是,例如,如果将转储移动到具有不同字节序的计算机,则会将整数数组注册到该挂钩以更改其值的字节顺序。

这可能会让我们意识到在一种不支持设计的可恢复转储的语言中,它有多么难以实现这一目标。

唉,所有其他语言都少了很多。除了一些Lisp实现,我不知道任何支持从内存转储恢复的语言。

这是一个错过的机会。

答案 2 :(得分:0)

我见过Mariano在最近的Esug会议上演示了在Pharo Smalltalk中使用Fuel(对象序列化)。只要没有命中未序列化的对象,就可以继续调试和运行。 Squeak smalltalk在Pi上运行,如果保存图像对你来说足够好,这是微不足道的。我们仍在等待更快的JITting VM for ARM(Google Summer of Code计划的一部分)