Dart VM仍在使用吗?

时间:2017-10-26 18:10:53

标签: dart flutter

我一直在使用dart / flutter进行一些项目,我真的非常喜欢它。

我已经读过,在构建移动应用时,dart会使用本机代码构建本机应用。但我也读到飞镖有自己的VM性能。

我想要了解的是,虚拟机是否是构建移动应用时使用的虚拟机,或者是否构建了为本机应用编译的其他代码。如果它做了别的什么,飞镖VM仍然用于什么?

3 个答案:

答案 0 :(得分:46)

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

现在更长的答案:Dart VM有两种不同的操作模式:JIT one和AOT one。

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

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

AOT模式的预编译机器代码来自哪里?当您在发布模式下构建应用程序时,此代码由Flutter应用程序中的(特殊模式)VM生成。

您可以详细了解Dart VM如何执行Dart代码here

答案 1 :(得分:8)

在发布模式下使用Dart VM时,它不是传统意义上的用软件实现的虚拟计算机处理器的VM(虚拟机),它具有自己的机器语言,与硬件的机器语言不同。

这是引起原始问题混乱的原因。在发布模式下,Dart VM基本上是一个运行时库(与所有高级语言所需的运行时库没有太大区别)。

答案 2 :(得分:0)

Dart VM非常适合服务器端应用程序,特别是使用dart:io访问本地文件,进程和套接字。