相关疑难解决方法(0)

Flutter“计算”内存泄漏-如何停用计算实例使用的堆变量?

在将一堆下载的JSON反序列化为对象时,我试图在移动应用程序中使用计算实例来减少麻烦

当我使用实施反序列化方法计算,堆一直在通过JSON 返回的反序列化对象(在列表中)无限期。即使该方法已关闭并且父/调用对象已退出,GC仍会正常触发但不会从堆中删除对象。这样,在使用DevTools内存探查器时,它会显示失控的内存消耗-堆只会不断增大。

普通内存配置文件 正常内存配置文件-直接调用反序列化方法时,内存使用量徘徊在45MB左右(但会在应用程序中造成垃圾)

失控的内存配置文件 失控的内存配置文件-通过计算调用反序列化方法时,内存使用量呈线性增加,并且从不停止使用(但不会在应用程序中造成混乱)

static Stream<EventCommitInfoModel> getEventsAfterDate(DateTime date) async* {

    // variable defs for scope reuse

    while (count < maxCount && retryCount > 0) {
      try {
        json = await http.read(url);

        // currentEvents = await compute(EventModel.fromJsonArray, json);
        currentEvents = EventModel.fromJsonArray(json);

        db = await AppStateModel.database;
        await db.upsertEventModels(currentEvents);
        yield new InfoModel(maxCount, currentEvents.length);
      }
      catch (ex) {

        // try again or close

      }
    }

    print("stream is closing.");
  }

Run Code Online (Sandbox Code Playgroud)

在上面的代码中,相关行以“ currentEvents =”开头。正常的内存行为可以通过以下方式看到:

  currentEvents = …
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
1
解决办法
359
查看次数

Flutter Isolate 图像处理内存问题

我正在开发一个颤振应用程序,它在列表中显示了许多未知纵横比的图像(除其他外)

为了改善用户体验,一行带有图像的图像在背景中(在堆栈中)显示带有模糊版本的原始图像。

  • 要创建模糊版本,我使用image库(https://pub.dev/packages/image
  • 为了不通过解码、模糊和编码阻塞 UI 线程,我使用隔离

但是经过一些测试后,我遇到了内存问题 - Isolate 似乎没有正确清理(尽管在图像处理完成后将其杀死)

到目前为止,应用程序因“内存不足”而崩溃(Android 和 iOS)

我尝试过的事情:

  • compute 颤振中的方法(仍在泄漏)
  • isolate包(https://pub.dev/packages/)(仍在泄漏)
  • Future.microtask - 不是泄漏,而是阻塞 UI 线程。

有其他人有类似的问题吗?

dart dart-isolates flutter

5
推荐指数
0
解决办法
412
查看次数

如何在 Flutter 中将相机图像转换为图像?

我想将相机图像从 Flutter 中相机插件的函数 startImageStream() 转换为 Image 以裁剪该图像,但我只找到了转换为 FirebaseVisionImage 的方法。

flutter

3
推荐指数
1
解决办法
4416
查看次数

标签 统计

flutter ×3

dart ×2

dart-isolates ×1