【问题标题】:A note in console while restarting a flutter application重新启动颤振应用程序时控制台中的注释
【发布时间】:2021-12-04 14:44:10
【问题描述】:

在创建颤振应用程序时,我重新启动了应用程序,然后在 dubug 控制台中弹出了一条注释

Background sticky concurrent mark sweep GC freed 187009(7MB) AllocSpace objects, 0(0B) LOS objects, 53% free, 6MB/14MB, paused 5.282ms total 60.228ms
 

我想知道我们为什么会得到这个,这是什么意思? 我用谷歌搜索了它,但我找不到任何与它相关的东西,所以如果有人能回答它会非常有帮助......

【问题讨论】:

标签: flutter flutter-layout


【解决方案1】:

这与调试垃圾收集器有关。

垃圾收集器会自动释放未使用的空闲内存。您可以在 C 和 Java 等语言中找到它——这是 Dart(有时)编译成(简化)的。您看到的存储统计信息与它释放了多少内存有关,您可以看到它在后台花费了 60 毫秒。

这是完全正常的,您不必担心。 AFAIK,您无法隐藏日志;你绝对不能停止这个过程。

【讨论】:

  • Dart 不能编译为 C 或 Java - 它有自己的 VM,即使在 AOT 编译时也是如此。
  • @RichardHeap 请参阅stackoverflow.com/questions/43854647/…。尽管 Flutter 不像普通应用程序那样直接编译(正如您所说,它有一个用于 AOT 编译的 VM),但它使用编译器(对于 Android,idk 关于 iOS)Gradle 来转换为 Java。如需更多证据,请参阅docs.flutter.dev/get-started/test-drive?tab=terminal:您可以从默认 Java 更改 --android-language。 Android 无法直接运行 Flutter 应用。不过,可以肯定的是,我会编辑我原来的帖子。
  • 再一次,不 - 没有转换到 Java 或 Swift。确实,Flutter 应用运行一些 Dart 代码和一些原生代码(在不同的线程中,通过平台通道进行通信),Dart 代码直接编译为原生,而原生代码由“普通”平台构建工具编译,(在Flutter web 略有不同 - Dart 代码编译为 Javascript,而“本机”代码也是 Javascript。)
  • 好吧,我仍然不是 100% 确定,但没有必要争论。
猜你喜欢
  • 1970-01-01
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-08
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多