小编Ill*_*Ike的帖子

Flutter:隔离(计算)内存泄漏

每次在 Flutter 应用程序中调用compute()时,我都会看到内存泄漏,据我所知,这基本上只是生成隔离的一种便捷方法。我的应用程序内存占用量不断增加,并且在 GC 之后永远不会下降。\n我已将代码简化为仅调用一个空函数 - 并且该问题仍然可以重现:

\n
  // run my _encodeJpeg in isolate\n  await compute(_encodeJpeg, null);\n\n\n  Future<void> _encodeJpeg(_JpegEncodeParams params) async {\n    // I\'ve made this function empty just to see if the memory leak is still reproducible - yes it is!\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,如果我不调用compute() - 我的应用程序中没有内存泄漏。所以肯定是compute()导致了这个问题。

\n

然后我创建了一个新的入门 Flutter 应用程序(默认带有按钮和计数器) - 并以相同的方式从该应用程序调用compute(),它工作正常!没有内存泄漏。很奇怪吧?!

\n

我的应用程序中的某些内容会导致compute() 上的内存泄漏,而应用程序本身(如果我不调用compute)没有任何内存泄漏。我使用一些以前版本的 Flutter 创建了我的应用程序,但现在我使用最新的 Flutter 编译它(见下文)。

\n

我的应用程序中是否有某些内容需要手动更新才能使compute()按预期工作?

\n

更新:我使用计算机( https://pub.dev/packages/computer )等库没有看到这个问题:

\n
final computer = Computer();\nawait computer.turnOn(workersCount: 1);\nawait computer.compute<void, _JpegEncodeParams>(_encodeTempJpeg, param: ...);\ncomputer.turnOff();\n
Run Code Online (Sandbox Code Playgroud)\n

颤医生:

\n …

memory-leaks dart-isolates flutter

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

标签 统计

dart-isolates ×1

flutter ×1

memory-leaks ×1