每次在 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 }\nRun Code Online (Sandbox Code Playgroud)\n请注意,如果我不调用compute() - 我的应用程序中没有内存泄漏。所以肯定是compute()导致了这个问题。
\n然后我创建了一个新的入门 Flutter 应用程序(默认带有按钮和计数器) - 并以相同的方式从该应用程序调用compute(),它工作正常!没有内存泄漏。很奇怪吧?!
\n我的应用程序中的某些内容会导致compute() 上的内存泄漏,而应用程序本身(如果我不调用compute)没有任何内存泄漏。我使用一些以前版本的 Flutter 创建了我的应用程序,但现在我使用最新的 Flutter 编译它(见下文)。
\n我的应用程序中是否有某些内容需要手动更新才能使compute()按预期工作?
\n更新:我使用计算机( https://pub.dev/packages/computer )等库没有看到这个问题:
\nfinal computer = Computer();\nawait computer.turnOn(workersCount: 1);\nawait computer.compute<void, _JpegEncodeParams>(_encodeTempJpeg, param: ...);\ncomputer.turnOff();\nRun Code Online (Sandbox Code Playgroud)\n颤医生:
\n …