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)上傳遞消息通訊。佈局