Dart HttpRequest 轮询

2024-02-06

我有一个网络应用程序,它有一个计时器,每 3 秒触发一次轮询以获取数据。它工作正常大约 2.5 分钟,然后 Chromium 崩溃了。

我的请求 Dart 看起来像这样

HttpRequest.getString('data/get_load_history_recent.json')
  .then((e) => _recentHistoryResponse(e))
  .catchError((e) => _recentHistoryError(e));

您能想到会发生这种情况的任何原因吗?我认为这是内存泄漏...

Edit:这是我的_recentHistoryResponse()

void _recentHistoryResponse(String data)
{
  Map obj = JSON.decode(data);
  if(obj['status'] == 'success')
  {
    List processes = obj['data']['processes'];
    List newItems = new List();

    List oldIdsArray = new List();

    int length = appDataDic.load_history_list.length;
    for(HistoryDataVO oldVO in appDataDic.load_history_list)
    {
      oldIdsArray.add(oldVO.loadID);
    }

    for(Map process in processes)
    {
      HistoryDataVO dataVO = new HistoryDataVO(); 
      dataVO.loadID = process['loadID'];
      dataVO.time = process['time'];
      dataVO.loadType = process['loadType'];
      dataVO.fileName = process['fileName'];
      dataVO.label = process['label'];
      dataVO.description = process['description'];
      dataVO.count = process['count'];
      dataVO.progress = process['progress'];
      dataVO.loadTask = process['loadTask'];

      // Check if the item is currently in the list
      if(length >= 1)
      {
        if(!LoadHistoryHelper.exists(oldIdsArray, dataVO.loadID))
        {
          dataVO.isNew = true;
        }
      }

      newItems.add(dataVO);
    }

    appDataDic.load_history_list.clear();
    appDataDic.load_history_list.addAll(newItems);

  }
}

我已经注释掉了存在检查!LoadHistoryHelper.exists(oldIdsArray, dataVO.loadID))(因为这似乎是显而易见的地方)但虚拟机仍然崩溃。

另外,我采用了相同的代码并将其放入一个独立的应用程序中,轮询检查中唯一真正的区别是appDataDic.load_history_list只是一个@observable List,不是一个ObservableList.

Edit 2 :好的,所以我发现了Map obj = JSON.decode(data);导致崩溃。我在 Javascript 论坛上读到超时会导致内存无法释放(我从来没有想过这一点,但这是有道理的),这是真的吗?有人能想出一种更好的方法来做到这一点吗?可以直接调用垃圾回收吗?我已经没有主意了。


还有一个问题here https://stackoverflow.com/questions/17393761/memory-leak-till-crash-due-to-httprequest,提示 HttpRequest 内存泄漏;但是我无法在 Dart 问题跟踪器中找到任何内容。如果您认为这可能是真正的内存泄漏,那么可能值得提出错误 https://code.google.com/p/dart/issues/entry.

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

Dart HttpRequest 轮询 的相关文章

随机推荐

  • 具有最大并发数的异步并发队列

    我遇到了一个自定义异步队列的错误 该队列一次调用 10 个异步函数 我正在启动包含 50 个作业的队列 一旦前 10 个作业完成 队列就会移动到后面的 10 个作业 直到完成所有作业 我遇到的错误是 一旦完成 50 个作业 它就会重新启动前
  • Linux 删除超过 1 年的文件夹和超过 3 个文件

    我正在编写一个 ant 脚本来清理存档文件夹 以下是我需要清理的方法 我需要删除超过一定天数的旧文件夹 并且其中包含超过 3 个文件 例如 如果某个文件夹已有 300 天的历史 但只有 3 个文件 则该文件夹不会被删除 我知道我可以通过 s
  • 使用记录 Haskell 进行泛型派生

    我基本上是想看看是否可以在 Haskell 中模拟 ORM 框架 这样如果用户想要创建数据库模型 他们会做这样的事情 data Car Car company String model String year Int deriving Mo
  • 从小部件启动/停止服务

    我想从小部件内部启动一项服务 我知道我可以使用 PendingIntent 来做到这一点 例如 PendingIntent intent PendingIntent getService context 0 new Intent conte
  • npm install 不能与 --prefix 一起使用

    看起来npm install prefix server 没有参数 不适用于 prefix旗帜 我只想安装 package json 中的所有软件包 该命令后我得到的只是 npm WARN enoent ENOENT 没有这样的文件或目录
  • HttpClient的默认最大连接数是多少

    HttpClient 是否使用与 HttpWebRequest 相同的 ServicePoint 连接限制 Thanks 答案并不完整 这取决于实施 在 net核心中ServicePointManager DefaultConnection
  • 在单独的程序集中使用 View 组件进行 ASP NET 5 本地化

    我有一个 类库 项目 上面有一些 ViewComponents 我已经让它们在我的 MVC 6 Web 应用程序 上工作 感谢这个问题 https stackoverflow com questions 34236850 asp net m
  • 如何使用 Python 解码 Angular 的自定义 HTML 编码

    我想抓取并解析伦敦证券交易所新闻文章 https www londonstockexchange com news article ESNT date for fy 2020 results announcement 14850033 网站
  • 如何获取 razor 视图引擎中集合中项目的元数据?

    我有一个项目写在C 位于 ASP NET MVC 5 框架的顶部 我试图将我的视图与视图模型分离 以便我可以使我的视图可重用 随着大量使用EditorTemplates我能够通过评估来创建所有标准视图 即创建 编辑和详细信息 ModelMe
  • 对大于 RAM 大小的数据进行排序

    这是谷歌面试问题 给定 2 台机器 每台机器都有 64 GB RAM 包含所有整数 8 字节 对整个 128 GB 数据进行排序 您可以假设有少量额外的 RAM 扩展此功能以对存储在 1000 台机器中的数据进行排序 我想出了外部排序 我们
  • Strongloop/loopback - 维护多个版本的 API

    我是第一次使用strongloop loopback 有一些基本的指导online https docs strongloop com display public LB Versioning your API用于 API 版本控制 var
  • 具有属性的 UML 建模枚举

    我想使用 Java 枚举 enum 创建一个 UML 图 它具有一个或多个属性 但我对如何做到这一点感到困惑 例如 可以这样声明枚举 public enum Enumeration type LITERAL A attr1 value at
  • ANSI C 编译器可以删除延迟循环吗?

    考虑 ANSI C 中的 while 循环 其唯一目的是延迟执行 unsigned long counter DELAY COUNT while counter 我已经看到这在嵌入式系统上被大量使用来强制延迟 例如 没有sleep功能和定时
  • C++ 构造函数中前导下划线的含义是什么?

    好吧 我不是一个非常有经验的 C 程序员 但我想知道以下构造函数的参数中下划线的意义是什么 class floatCoords public floatCoords float x float y float width float hei
  • PDO 返回所有行[重复]

    这个问题在这里已经有答案了 所以 现在我有一个 PHP 函数 它利用 PDO 返回特定表的第一行 这很好用 但我想返回所有信息 同时能够组织所有信息 我有桌子zip admins我正在尝试返回first name and last name
  • 使用 Google Maps API v3 循环遍历标记问题

    我不知道为什么这不起作用 我没有任何错误 但发生的情况是 无论我单击哪个标记 它总是单击最后一个标记 我不确定为什么 因为 the marker 的设置方式相同 我怎样才能解决这个问题 使用新的 jQuery XML 进行了更新 funct
  • 如何递归删除 UNIX 目录中的所有隐藏文件?

    我已经搜索了一段时间 但似乎无法得到简洁的解决方案 我有一台 Mac 其中有一个文件夹 我想清除该文件夹中的所有隐藏文件 目录 任何隐藏的内容 它曾经是一个包含大量 metadata svn 内容的 Eclipse 工作区 我很乐意将其全部
  • JDBC 驱动程序是否应该包含在 WAR 中?

    我们正在开发一个商业软件产品 它支持 Oracle MySQL 和 SQL Server 后端 我们也使用 H2 进行测试 我们使用特定版本的 JDBC 驱动程序针对这些不同的数据库进行集成测试 Maven 完美地处理了这一切 当将应用程序
  • HTTPS 使用非对称加密还是对称加密?

    我今天上午都在搜索 但我找到了一些网站 据说数据是 通过使用 TLS 协议的非对称加密发送的 然后我发现相反 请你告诉我哪个是真的 谢谢 有谁知道逐步解释 tls 协议通过 https 握手的指南吗 最好的答案是两者兼而有之 TLS 使用非
  • Dart HttpRequest 轮询

    我有一个网络应用程序 它有一个计时器 每 3 秒触发一次轮询以获取数据 它工作正常大约 2 5 分钟 然后 Chromium 崩溃了 我的请求 Dart 看起来像这样 HttpRequest getString data get load