Dart同时支持JIT(Just In Time,即时编译)和AOT(Ahead of Time,运行前编译)两种编译模式。算法
JIT 在运行时即时编译,在开发周期中使用,能够动态下发和执行代码,开发测试效率高,但运行速度和执行性能则会由于运行时即时编译受到影响。编程
AOT 即提早编译,能够生成被直接执行的二进制代码,运行速度快、执行性能表现好,但每次执行前都须要提早编译,开发测试效率低。并发
Dart VM的内存分配策略为,建立对象时只须要在堆上移动指针,内存增加始终是线性的,省去了查找可用内存的过程。框架
在Dart中,并发是经过Isolate实现的。Isolate是相似于线程但不共享内存,独立运行的worker。这样的机制,就可让Dart实现无锁的快速分配。函数
Dart的垃圾回收采用多生代算法。新生代在回收内存时采用“半空间”机制,出发垃圾回收时,Dart会将当前半空间中的“活跃”对象拷贝到备用控件,而后总体释放当前空间的全部内存。回收过程当中,Dart只须要操做少许的“活跃”对象,没有引用的大量“死亡”对象则被忽略,这样的回收机制很适合Flutter框架中大量Widget销毁重建的场景。工具
Dart是单线程模型,不存在资源竞争和状态同步的问题。这就意味着,一旦某个函数开始执行,就将执行到这个函数结束,而不会被其余Dart代码打断。oop
Dart中并无线程,只有Isolate(隔离区)。Isolates以前不会共享内存,就像几个运行在不一样进程中的worker,经过事件循环(Event Looper)在事件队列(Event Queue)上传递消息通讯。布局