Dart HttpRequest轮询

Dart HttpRequest轮询,dart,dart-polymer,dartium,Dart,Dart Polymer,Dartium,我有一个web应用程序,它有一个计时器,每3秒触发一次轮询以获取数据。它可以正常工作约2.5分钟,然后崩溃 我的请求镖看起来像这样 HttpRequest.getString('data/get\u load\u history\u recent.json')) .然后((e)=>\u最近的历史响应(e)) .catchError((e)=>\u recentHistoryError(e)); 你能想出发生这种情况的原因吗?我猜是内存泄漏 编辑: 这是我的\u recentHistoryRes

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

我的请求镖看起来像这样

HttpRequest.getString('data/get\u load\u history\u recent.json'))
.然后((e)=>\u最近的历史响应(e))
.catchError((e)=>\u recentHistoryError(e));
你能想出发生这种情况的原因吗?我猜是内存泄漏

编辑: 这是我的
\u recentHistoryResponse()

void\u recentHistoryResponse(字符串数据)
{
Map obj=JSON.decode(数据);
如果(obj['status']=='success')
{
列出进程=obj['data']['processs'];
List newItems=新列表();
List oldIdsArray=新列表();
int length=appDataDic.load\u history\u list.length;
用于(appDataDic.load\u history\u列表中的HistoryDataVO oldVO)
{
添加(oldVO.loadID);
}
for(映射进程中的进程)
{
HistoryDataVO dataVO=新的HistoryDataVO();
dataVO.loadID=进程['loadID'];
dataVO.time=进程['time'];
dataVO.loadType=进程['loadType'];
dataVO.fileName=进程['fileName'];
dataVO.label=进程['label'];
dataVO.description=进程['description'];
dataVO.count=进程['count'];
dataVO.progress=进程['progress'];
dataVO.loadTask=进程['loadTask'];
//检查项目当前是否在列表中
如果(长度>=1)
{
如果(!LoadHistoryHelper.exists(oldIDSRarray,dataVO.loadID))
{
dataVO.isNew=true;
}
}
newItems.add(dataVO);
}
appDataDic.load_history_list.clear();
appDataDic.load\u history\u list.addAll(newItems);
}
}
我已经注释掉了exists check
!LoadHistoryHelper.exists(oldIDSRarray,dataVO.loadID))
(因为这似乎是显而易见的地方),但它仍然会导致VM崩溃

此外,我还将相同的代码放入了一个单独的应用程序中,投票检查中唯一真正的区别是
appDataDic。加载历史记录列表
只是一个
@可观察列表
,而不是
可观察列表

编辑2:
好的,我发现
Map obj=JSON.decode(数据)导致崩溃。我在一个Javascript论坛上读到超时会导致内存无法释放(我从未想过这一点,但这是有意义的),这是真的吗?有人能想出更好的办法吗?我可以直接打电话给垃圾收集站吗?我的想法快用完了。

还有一个问题,表明HttpRequest中存在内存泄漏;但是,我在Dart问题跟踪程序中找不到任何东西。如果您认为这可能是一个真正的内存泄漏,那么它可能是值得的。

您可以发布您的
\u recentHistoryResponse()
?如果有漏洞,这是最有可能的罪魁祸首。嘿,我已经更新了