flutter_boost icon indicating copy to clipboard operation
flutter_boost copied to clipboard

[Bug]: Flutter Boost5.0.1 在Flutter3.16.5环境下,使用https://github.com/alibaba/flutter_boost/tree/v5.0.1/example运行,iOS端每新增一个容器,内存增长50-70MB

Open heijianye opened this issue 11 months ago • 7 comments

请描述遇到的问题,以及您所期望的正确的结果

Flutter Boost 5.0.1版本在iOS端打开新容器,内存增长幅度基本维持在50M~70MB左右,从打开第三个容器开始,内存增幅基本维持在70M左右。(Android端没有这个问题,新增flutter容器,内存基本不变) 期望:打开新的容器的时候,内存不要出现大幅度的变化(目前只有iOS有问题)

请说明如何操作会遇到上述问题

具体验证步骤如下: 1.使用boost5.0.1,Flutter的版本为3.16.5,运行https://github.com/alibaba/flutter_boost/tree/v5.0.1/example sample工程运行模式为release,iPhone12(iOS 14.4.2)。 image 2.启动sample之后,进入首页,内存维持在47.1M,之后点击“Push Flutter Engine”打开第一个flutter容器,内存稳定在102.1M(增长55M); image image 3.滑动页面到底部,找到“popUtil demo”入口,内存变为125.8M(增加23.7M),点击打开新容器,此时APP开启了2个flutter容器,内存变为174.7M(增长48.9M) image image 4.点击push with container,打开新的容器,此时3个容器,内存变为243.5M(增加68.8M) image 5.此后在新打开的容器中反复点击push with container打开新容器,依次打开10个Flutter容器,内存变化和增幅依次为310.4M(66.9M),379.3M(68.9M),448.3M(69M),519.3M(71M),586M(66.7M),654.9M(66.9M),723.8M(68.9M) image image image image 剩下的图,我不贴了,这几张已经足够说明问题。

在下面填入关键复现代码

使用的代码是https://github.com/alibaba/flutter_boost/tree/master/example的sample工程,工程逻辑没有做修改。

复现的平台

iOS

Flutter SDK版本

3.16.5

FlutterBoost版本

5.0.1

是否延迟初始化FlutterBoost

No

解决方案

heijianye avatar Mar 09 '24 03:03 heijianye

使用的代码是https://github.com/alibaba/flutter_boost/tree/v5.0.1/example的sample工程,工程逻辑没有做修改,直接运行release模式,按照操作步骤在iPhone12(iOS 14.4.2)上操作,同时关注内存变化。

heijianye avatar Mar 09 '24 03:03 heijianye

是否和 #1954 一样的

joechan-cq avatar Mar 11 '24 07:03 joechan-cq

试试在deinit里,主动释放 WechatIMG187

iweixiao avatar Mar 14 '24 01:03 iweixiao

@joechan-cq 使用内部容器打开页面 会遇到侧滑返回的问题

xinhc-yuanye avatar Mar 19 '24 07:03 xinhc-yuanye

@joechan-cq 使用内部容器打开页面 会遇到侧滑返回的问题

https://github.com/alibaba/flutter_boost/issues/1983#issuecomment-2097594781 侧滑的解决问题 开启新的FBFlutterViewContainer:

  1. 开启后内存占用大,FlutterPage 跳FlutterPage 相当于打开两个新的controller
  2. 传参问题,FlutterPage跳FlutterPage不能直接传入对象结构,只能传入基本的数据类型,map、json、字符串、number等,不能传入model

不开启新的FBFlutterViewContainer:

  1. 无法解决侧滑返回问题,NativePage -> FlutterPage-->FlutterPage --> 侧滑 直接回退到NativePage ,不会回到上级的FlutterPage
  2. FlutterPage跳转FlutterPage可以传递model

applebest avatar May 28 '24 08:05 applebest

遇到同样的问题,用的是 5.0.2 和 4.6.1 都试过了,iOS 内存增长明显,Android 内存比较平稳,请问原生和 Flutter 交叉这种 Case 怎么解决,如何在页面 disappear 内存会释放一些,现在看只是增长,如果启动一个原生 VC 并没有太大内存增长 @joechan-cq

wangliang0209 avatar Jul 25 '24 08:07 wangliang0209

遇到同样的问题,用的是 5.0.2 和 4.6.1 都试过了,iOS 内存增长明显,Android 内存比较平稳,请问原生和 Flutter 交叉这种 Case 怎么解决,如何在页面 disappear 内存会释放一些,现在看只是增长,如果启动一个原生 VC 并没有太大内存增长 @joechan-cq

小哥,能加个V吗,我也iOS+Flutter,有问题想请教,感谢

TomasWell avatar Jul 26 '24 07:07 TomasWell

@heijianye debug版能够复现吗

imcjj avatar Sep 27 '24 06:09 imcjj

@heijianye 这个是引擎内部创建一个FlutterViewController的时候必须的内存消耗,在ios端比较明显,这和引擎内部设计有关,打开一个容器时新增的内存在退出销毁该容器的时候就会被释放,并不会导致内存累积。下图展示的是连续三次打开然后退出容器时的内存变化。 截屏2024-09-27 17 59 29

imcjj avatar Sep 27 '24 11:09 imcjj

这个issue关注的问题在于: 1.demo验证过,如果启动的是单纯的native的controller,不会有这么大的内存增长; 2.flutter boost作为单引擎方案,虽然启动新容器可能会有内存增长,但是在单引擎的前提下,启动一个新的容器,不应该造成这么大的内存增长; 3.我验证过,即使容器关闭之后,内存也不能完全回到之前的水平。

heijianye avatar Oct 12 '24 06:10 heijianye