gpt4 book ai didi

Dart HttpRequest 轮询

转载 作者:行者123 更新时间:2023-12-03 00:56:13 27 4
gpt4 key购买 nike

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

我的请求 Dart 看起来像这样

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

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

编辑:这是我的 _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 列表,不是 ObservableList

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

最佳答案

还有一个问题here ,提示 HttpRequest 内存泄漏;但是我在 Dart 问题跟踪器中找不到任何内容。如果您认为这可能是真正的内存泄漏,那么可能值得 raising a bug .

关于Dart HttpRequest 轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com