【发布时间】:2013-06-28 08:58:14
【问题描述】:
我陷入了内存泄漏。我写了以下示例,它不断增加内存使用量:
import 'dart:io';
import 'dart:async';
import 'dart:utf';
Future<Stream<List<int>>> readFile2Stream(String path){
File f = new File(path);
return f.exists().then((bool exists){
if( !exists ){
return new Stream<List<int>>.fromIterable([encodeUtf8("Could not find $path")]);
}else{
return f.openRead();
}
});
}
void readFile(String path){
readFile2Stream(path).then(
(Stream<List<int>> data){
data.listen((List<int> data){
print(data);
},
onError: (dynamic error){
print("Error: $error");
},
onDone: (){
print("Done");
});
}
);
}
void main() {
Timer t = new Timer.periodic(new Duration(seconds:2),(Timer it){
readFile("memleaktest.dart");
});
}
有人可以出于某种原因给我提示吗?我没有任何线索:-(
一些小问题:
有没有办法通过摆脱返回类型的 Future 封装来简化这个示例? 我不想使用 File.existsSync(),而是想在 Stream 处理之前添加 Future 处理。
【问题讨论】:
-
不要
import 'dart:core';它自动为所有飞镖程序完成,没有它你什么也做不了。 The Dart core library provides a small but critical set of built-in functionality. This library is automatically imported into every Dart program. -
感谢您的提示。我更正了。
标签: dart dart-io dart-async