dart - Dart VM 还在使用吗?

我已经在几个项目中使用了 dart/flutter,我真的很喜欢它。

我读到过,在构建移动应用时,dart 会使用原生代码构建原生应用。但我也读到 dart 有自己的虚拟机来提高性能。

我想了解的是,该 VM 是在您构建移动应用程序时使用的,还是在构建为本地应用程序编译的其他代码。如果它在做其他事情,那么 dart VM 还用来做什么?

最佳答案

简短回答:是的,在您构建移动应用程序时仍在使用 Dart VM。

现在再回答一下:Dart VM 有两种不同的操作模式,一种是 JIT,一种是 AOT。

在 JIT 模式下,Dart VM 能够动态加载 Dart 源代码,对其进行解析并将其编译为本地机器代码以执行它。此模式在您开发应用时使用,并提供调试、热重载等功能。

在 AOT 模式下,Dart VM 不支持动态加载/解析/编译 Dart 源代码。它只支持加载和执行预编译机器码。然而即使是预编译的机器代码仍然需要VM来执行,因为VM提供了包含垃圾收集器的runtime systemdart:*库运行所需的各种native方法、运行时类型信息,动态方法查找等。此模式用于您部署的应用程序。

AOT 模式的预编译机器码从何而来?当您在 Release模式下构建您的应用程序时,此代码由您的 Flutter 应用程序中的(一种特殊模式的)VM 生成。

您可以阅读更多关于 Dart VM 如何执行 Dart 代码 here .

https://stackoverflow.com/questions/46961097/

相关文章:

dart - 如何去除滚动发光?

Flutter - 如何将用户数据传递给所有 View

dart - Flutter 切换到 Tab 重新加载小部件并运行 FutureBuilder

dart - 使用不包含 MediaQuery 的上下文调用的 Flutter 错误 : Media

dart - 如何在另一个 flutter 应用程序中使用本地 flutter 包?

flutter - 创建一个带有圆形边框的按钮

flutter - 如何将 BottomNavigationBar 与 Navigator 一起使用

flutter - 弹出时强制 Flutter 导航器重新加载状态

flutter - 如何更改文本字段 flutter 中的值?

android-studio - Dart 的 SDK 在/flutter 文件夹中的什么位置?