当前位置: 首页 > news >正文

Flutter知识点

Dart语言基础知识

Dart特性:

Dart 是少数同时支持 JIT(Just In Time,即时编译)和 AOT(Ahead of Time,运行前编译)的语言之一。语言在运行之前通常都需要编译,JIT 和 AOT 则是最常见的两种编译模式。

JIT 在运行时即时编译,在开发周期中使用,可以动态下发和执行代码,开发测试效率高,但运行速度和执行性能则会因为运行时即时编译受到影响。

AOT 即提前编译,可以生成被直接执行的二进制代码,运行速度快、执行性能表现好,但每次执行前都需要提前编译,开发测试效率低。

总结来讲,在开发期使用 JIT 编译,可以缩短产品的开发周期。Flutter 最受欢迎的功能之一热重载,正是基于此特性。而在发布期使用 AOT,就不需要像 React Native 那样在跨平台 JavaScript 代码和原生 Android、iOS 代码之间建立低效的方法调用映射关系。所以说,Dart 具有运行速度快、执行性能好的特点。

内存分配与垃圾回收:

Dart VM 的内存分配策略比较简单,创建对象时只需要在堆上移动指针,内存增长始终是线性的,省去了查找可用内存的过程。

Dart 的垃圾回收,则是采用了多生代算法。新生代在回收内存时采用“半空间”机制,触发垃圾回收时,Dart 会将当前半空间中的“活跃”对象拷贝到备用空间,然后整体释放当前空间的所有内存。回收过程中,Dart 只需要操作少量的“活跃”对象,没有引用的大量“死亡”对象则被忽略,这样的回收机制很适合 Flutter 框架中大量 Widget 销毁重建的场景。

单线程模型:

Dart 中并没有线程,只有 Isolate(隔离区)。Isolates 之间不会共享内存,就像几个运行在不同进程中的 worker,它们通过事件循环(Event Looper)在事件队列(Event Queue)上传递消息通信。所以如果想要在 Dart 中实现并发是可以通过 Isolate 实现的。Isolate 的这种类似于线程但不共享内存,独立运行的 worker的机制,就可以让 Dart 实现无锁的快速分配。

无需单独的声明式布局语言:

Dart 声明式编程布局易于阅读和可视化,使得 Flutter 并不需要类似 JSX 或 XML 的声明式布局语言。所有的布局都使用同一种格式,也使得 Flutter 很容易提供高级工具使布局更简单,就突出一个上手简单。

http://www.lryc.cn/news/371320.html

相关文章:

  • 2024-06-12 问AI: 在大语言模型中,什么是Jailbreak漏洞?
  • Vue22-v-model收集表单数据
  • 【深度学习】深入解码:提升NLP生成文本的策略与参数详解
  • Petalinux由于网络原因产生的编译错误(2)--Fetcher failure:Unable to find file
  • 随手记:商品信息过多,展开收起功能
  • uniapp上传头像并裁剪图片
  • 9.1.3 简单介绍单阶段模型YOLO、YOLOv2、YOLO9000、YOLOv3的发展过程
  • 英智教育智能体,AI Agent赋能教育培训行业数字化升级
  • 什么是电脑监控软件?六款知名又实用的电脑监控软件
  • 小程序名片怎么生成?AI名片生成器源码系统 为企业店铺创建自己的数字名片
  • 浅谈PMP:项目管理的专业化认证
  • 获取闲鱼商品详情api
  • java1.8运行arthas-boot.jar运行报错解决
  • 每日一练 - IGMP协议与查询器选举机制
  • 深入浅出:面向对象软件设计原则(OOD)
  • 缓存与数据一致性问题
  • 2024年上海高考作文题目(ChatGPT版)
  • .net 调用海康SDK以及常见的坑解释
  • KVM+GFS高可用
  • C++迈向精通:当我尝试修改虚函数表
  • IDEA 高效插件工具
  • SQL入门大全
  • 【深度优先搜索 广度优先搜索】297. 二叉树的序列化与反序列化
  • App UI 风格,引领设计风向
  • TIM—通用定时器高级定时器
  • 【数据结构与算法(C语言)】循环队列图解
  • 私域流量转化不济的原因
  • 百万上下文RAG,Agent还能这么玩
  • 【后端开发】服务开发场景之高可用(冗余设计,服务限流,降级熔断,超时重试,性能测试)
  • 在 Selenium 中更改 User-Agent | 步骤与最佳实践