我运行以下 GNU Smalltalk 脚本:
stdout << 'Before'; nl.
ObjectMemory snapshot: 'image.im'.
stdout << 'After'; nl.
它按预期产生此输出,并写出一个新图像:
Before
After
现在我重新加载图像:
$ gst -I image.im
我希望看到的是这个词After
被打印出来——从图像保存在原始脚本中的那一点开始执行。实际发生的是我刚刚得到了一个 REPL 。
显然,图像要么没有保存正在运行脚本的线程的状态,要么在加载图像时没有重新创建线程。我认为 Smalltalk 图像应该包含系统整个状态的快照;那么为什么会这样呢?(有什么办法可以使这项工作?我想使用这种行为。)