Flutter Engine与Dart VM之间存在什么关系?
Flutter Engine 与 Dart VM 的核心关联
Dart VM 是 Dart 代码的专属运行时环境,负责 Dart 代码的编译执行、内存管理、垃圾回收、Isolate 调度等核心能力;Flutter Engine 是 Flutter 框架的底层运行载体,二者为宿主与内嵌运行时的依存关系,具体关联逻辑如下:
- 生命周期绑定:进程内首个
FlutterEngine实例初始化时,会首先创建全局唯一的 Dart VM 实例,后续同进程内的其他FlutterEngine实例会复用该 VM,每个FlutterEngine对应 VM 内独立的 Isolate Group 运行上层 Dart 代码;当进程内所有FlutterEngine实例全部销毁后,Dart VM 实例才会同步释放。 - 能力调用关系:Flutter Engine 本身不具备 Dart 代码解析执行能力,所有上层用 Dart 编写的 Flutter 业务代码、框架代码的执行,全部交由内嵌的 Dart VM 完成;Flutter Engine 负责将平台侧的输入事件、渲染调度信号传递给 Dart VM,同时接收 Dart VM 返回的渲染指令、原生方法调用请求,完成后续的平台分发、渲染合成处理。
- 资源联动逻辑:Dart VM 运行所需的堆内存、线程调度资源全部由 Flutter Engine 分配管理,Dart VM 的垃圾回收触发策略也会和 Flutter Engine 的渲染帧率调度做联动,避免 GC 过程抢占 UI 绘制资源导致卡顿。
目前公开可查的相关技术资料中,针对二者关联的深度说明较少:
- 公开的 Dart VM 详细技术文档未涉及 Flutter Engine 相关适配逻辑的说明
- iOS、Android 平台的 FlutterEngine 官方文档、对应源代码仅在少量文档注释中提及 Dart VM,没有系统的关联逻辑讲解
内容的提问来源于stack exchange,提问作者Ben Butterworth
相关产品推荐
相关产品推荐

