后台并发复制GC释放 - Flutter

2024-01-04

在我的 Flutter 日志中,我不断收到以下消息(只是有一些不同的数字):

Background concurrent copying GC freed 153040(3MB) AllocSpace objects, 12(4MB) LOS objects, 49% free, 4MB/8MB, paused 819us total 173.633ms

我最近实现了块模式,但我对流不太熟悉,也许我在那里做错了什么......

我有大约 5000 行代码,所以我无法将其全部发布在这里,只是想知道您是否知道这个问题,也许这是一个常见错误。

编辑:哦,是的,顺便说一句,我正在 Android 模拟器、Android Pie 上进行测试。我的平台是Windows。


这不是一个错误,它只是一条 Android 日志消息,通知您垃圾收集何时发生。一切都很正常。 日志消息不会损害您的应用程序,请参阅这个问题涉及原生 Android 上的同一主题 https://stackoverflow.com/questions/42381474/background-sticky-concurrent-mark-sweep-gc-freed。 只有当内存不足或者由于垃圾收集而出现性能问题时,这才会成为问题。 唷。


话虽这么说,让我们看看如何才能减少收到这些消息。

  • 通常,模拟器的资源是有限的。 因此,最简单的方法是增加模拟器的 RAM 大小或使用实际手机而不是模拟器。

  • 其次,确保你的逻辑无法处理大量数据,或者如果确实如此,则尽快将其处理掉。

  • Also, 不要自己“缓存”小部件将它们存储在这样的状态中:

    class _MyWidgetState extends State<MyWidget> {
      Widget button;
    
      @override
      void initState() {
        super.initState();
        button = RaisedButton(...);
      }
    
      @override
      Widget build() => button;
    }
    

    要获取有关为什么不这样做的更多信息,请查看我对一个有点相关的问题的回答 https://stackoverflow.com/questions/52856438/defining-widgets-inside-initstate-or-class-constructors-rather-than-build/52857036#52857036。 基本上,Dart 使用两种类型的垃圾收集器,年轻的太空拾荒者对于短命对象和标记扫描GC对于长寿者。 通过手动缓存您的小部件,您将依赖于后者,后者速度较慢,并且实际上可能会通知 Android 有关已释放内存的信息,从而导致您的日志。

  • 最后,你可以随时过滤或忽略日志. :D

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

后台并发复制GC释放 - Flutter 的相关文章

随机推荐

  • Python 中“导入为”的用例

    我想知道我们是否可以使用 import as 用于创建相对紧凑或可读的代码 我知道它的通常用例基于PEP https www python org dev peps pep 0221 例如避免名称冲突 情况如下 出于演示目的 保持非常简单
  • 扩展 std::exception 类:程序不会执行适当的 catch 处理程序

    我从 std exception 派生了一个类 class exc public std exception public exc const text char throw exc const exc throw virtual exc
  • Malt 解析器抛出类未找到异常

    我正在尝试使用 NLTK 中的 Malt Parser 来解析句子 当我这样做的时候raw parse sent 它给出了退出代码 1 的错误 我在终端上执行了 java 命令 它给出了类未找到异常 我不明白现在出了什么问题 java Xm
  • android 证书指纹 sha1 可以在 firebase 和 Google Place API 中使用吗?

    我想知道我们是否可以在 Firebase 和 Google Maps API 中使用相同的证书指纹 SHA1 在此之前 我使用证书指纹 SHA1 进行 Firebase 登录授权 但是 对于 Google Places API 我也必须使用
  • 我可以使用 Byte Buddy 重新定义私有方法吗?

    是否可以使用Byte Buddy重新定义类的私有方法 似乎使用 Byte Buddy 的入口点总是对现有类进行子类化 这样做时 显然不可能重新定义父类的私有方法 至少不能以在父类中使用重新定义的方法的方式 考虑以下示例 public cla
  • HTTPError:HTTP 错误 503:服务不可用 goslate 语言检测请求:Python

    我刚刚开始使用 Python 中的 goslate 库来检测文本中单词的语言 但在测试 7 8 个输入后 我给出的输入包含用两种语言 阿拉伯语和英语 编写的单词 之后 它开始给我错误 Traceback most recent call l
  • 在 Facebook 墙和 Facebook 好友墙上发布图片

    我对 API 的问题感到非常厌倦 比如 Facebook Graph API 天气 API 等 我在我的项目中使用了这两个 API 用于 Facebook 的 Graph API 和用于天气的 Google 天气 API 但现在项目完成时
  • 我可以将 PowerShell“Start-Job”设置为低优先级吗?

    我想降低我开始的工作的优先级开始工作 https learn microsoft com en us powershell module microsoft powershell core start job view powershell
  • Java:使用 Collat​​orKey 对集合进行排序

    我想要实现的是按字符串值对对象集合进行排序 但是 以依赖于语言环境的方式使用整理器 由于性能原因 我不想使用 Collat orcompare 方法 如下代码所示 而是使用 Collat ionKey 类 因为 java API 声明使用
  • 子视图显示在父 UIView 的边界之外

    我有一个包含另一个子视图的 UIView 子视图的框架位于超级视图的边界之外 但是当我运行应用程序时 整个子视图是可见的 例子 Super view Subview
  • Android O 中的通知徽章

    我正在使用 Android Oreo SDK 使用 Google Nexus 5x 进行测试 我无法在主屏幕的应用程序图标中找到通知徽章 即使我收到来自应用程序的通知 并且应用程序快捷方式未显示数字 以下是代码片段 final Notifi
  • 根据路径方向更改 Google 地图标记方向

    我想知道是否可以根据地图上绘制的路径更改标记方向 这是一个例子 正如您所看到的 标记是一辆汽车 带有前保险杠和尾灯 我想将汽车定向到路径行驶的方向 在本例中将汽车定向为向右约 45 度 我在用着DirectionsService绘制路径 我
  • 如果是index.php,则显示“this”,如果不是,则显示“this”

    迫切希望有人可以提供帮助 我是php新手 我尝试通过教程自学 但我到处搜索都无济于事 基本上我正在寻找实现一个 如果index php页面 显示foo 如果不在index php页面上 则显示bar 有任何想法吗 我希望我能很好地解释这一点
  • 错误:Apache 意外关闭错误消息

    我刚刚使用此指南将 XAMPP 的 PHP 版本从 PHP 7 1 7 升级到 PHP 7 2 0article https www techflirt com how to upgrade php in xampp 然后我尝试重新启动 X
  • 控制器可以进行数据库查询(MySQL)吗?如果是,什么时候?

    我正在阅读大量有关 MVC 的教程 所以我的问题是 一个完美的 PHP MVC 框架可以在控制器中进行数据库查询吗 据我了解 最舒服的方法是将所有数据库查询放在模型中 对吧 如果我有 POST 或 smth 我只需将该 POST 传递给 M
  • npm 开始在 node.js 中给出错误

    我对 Node js 和 mongodb 完全陌生 我正在使用以下链接 http cwbuecheler com web tutorials 2013 node express mongo http cwbuecheler com web
  • Cython:内存视图的大小属性

    我在 Cython 中使用了很多 3D 内存视图 例如 cython declare a double 1 a np empty 10 20 30 dtype double 我经常想循环遍历所有元素a 我可以使用像这样的三重循环来做到这一点
  • Javascript IE 错误:“目标”为 null 或不是对象

    document onkeydown function event var tagName event target tagName if tagName INPUT tagName TEXTAREA event alt event con
  • 带有改造的自动完成文本视图

    我正在使用一个实现AutoCompleteTextView其中建议是从 webapi 获取并根据用户输入显示的 我正在使用改造客户端进行网络连接 我有两个疑问 1 我不希望为每个键入的字符发送请求 仅当用户按住 5 秒时才发送请求 我怎样才
  • 后台并发复制GC释放 - Flutter

    在我的 Flutter 日志中 我不断收到以下消息 只是有一些不同的数字 Background concurrent copying GC freed 153040 3MB AllocSpace objects 12 4MB LOS obj