DART的快照类似于Smalltalk images,因为它们允许几乎即时启动应用程序.但是,与Smalltalk图像不同,快照不存储程序状态.
这在速度较慢的移动设备中尤其有用,因为它们固有的速度较慢,而且比桌面系统更受内存的限制.这一原因,以及电池使用会让我们关闭不必要的程序的事实,使得启动速度变得重要.
DART通过堆快照功能解决了启动缓慢的问题,该功能类似于Smalltalk的映像系统.遍历应用程序的堆,并将所有对象写入一个简单文件.注意:目前,DART发行版附带了一个工具,该工具可以启动DART VM,加载应用程序的代码,并且就在调用main之前,它会拍摄堆的快照.DART VM可以使用这样的快照文件快速加载应用程序.
快照功能还用于序列化在DART隔离之间发送的对象图(使用SnapshotWriter序列化).
目前,我不知道启动快照或处理它们的任何方法.将来,我希望可以从Web服务器提供快照文件,并让浏览器DART VM即时处理该文件.
快照格式本身是跨平台的,这意味着它可以在32位、64位机器等之间工作.这种格式可以快速读入内存,重点是尽量减少额外的工作,比如指针修正.
下面是snapshot.cc:http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot.cc的源代码
测试:http://code.google.com/p/dart/source/browse/trunk/dart/runtime/vm/snapshot_test.cc分
因此,它可以将应用程序启动速度提高10倍的原因是,它是not个源代码(如JavaScript),按原样发送,然后缓慢处理.
你想在哪里使用它?任何你能go 的地方.在服务器端,它基本上已经为您实现了(实际上并不重要).但在客户端,这是不可能的.据我所知,可以将这些快照提供给浏览器,以便即时启动,但您真的必须等待,因为它目前不可用.