flutter_boost
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
请描述遇到的问题,以及您所期望的正确的结果
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)。
2.启动sample之后,进入首页,内存维持在47.1M,之后点击“Push Flutter Engine”打开第一个flutter容器,内存稳定在102.1M(增长55M);
3.滑动页面到底部,找到“popUtil demo”入口,内存变为125.8M(增加23.7M),点击打开新容器,此时APP开启了2个flutter容器,内存变为174.7M(增长48.9M)
4.点击push with container,打开新的容器,此时3个容器,内存变为243.5M(增加68.8M)
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)
剩下的图,我不贴了,这几张已经足够说明问题。
在下面填入关键复现代码
使用的代码是https://github.com/alibaba/flutter_boost/tree/master/example的sample工程,工程逻辑没有做修改。
复现的平台
iOS
Flutter SDK版本
3.16.5
FlutterBoost版本
5.0.1
是否延迟初始化FlutterBoost
No
解决方案
使用的代码是https://github.com/alibaba/flutter_boost/tree/v5.0.1/example的sample工程,工程逻辑没有做修改,直接运行release模式,按照操作步骤在iPhone12(iOS 14.4.2)上操作,同时关注内存变化。
是否和 #1954 一样的
试试在deinit里,主动释放
@joechan-cq 使用内部容器打开页面 会遇到侧滑返回的问题
@joechan-cq 使用内部容器打开页面 会遇到侧滑返回的问题
https://github.com/alibaba/flutter_boost/issues/1983#issuecomment-2097594781 侧滑的解决问题 开启新的FBFlutterViewContainer:
- 开启后内存占用大,FlutterPage 跳FlutterPage 相当于打开两个新的controller
- 传参问题,FlutterPage跳FlutterPage不能直接传入对象结构,只能传入基本的数据类型,map、json、字符串、number等,不能传入model
不开启新的FBFlutterViewContainer:
- 无法解决侧滑返回问题,NativePage -> FlutterPage-->FlutterPage --> 侧滑 直接回退到NativePage ,不会回到上级的FlutterPage
- FlutterPage跳转FlutterPage可以传递model
遇到同样的问题,用的是 5.0.2 和 4.6.1 都试过了,iOS 内存增长明显,Android 内存比较平稳,请问原生和 Flutter 交叉这种 Case 怎么解决,如何在页面 disappear 内存会释放一些,现在看只是增长,如果启动一个原生 VC 并没有太大内存增长 @joechan-cq
遇到同样的问题,用的是 5.0.2 和 4.6.1 都试过了,iOS 内存增长明显,Android 内存比较平稳,请问原生和 Flutter 交叉这种 Case 怎么解决,如何在页面 disappear 内存会释放一些,现在看只是增长,如果启动一个原生 VC 并没有太大内存增长 @joechan-cq
小哥,能加个V吗,我也iOS+Flutter,有问题想请教,感谢
@heijianye debug版能够复现吗
@heijianye 这个是引擎内部创建一个FlutterViewController的时候必须的内存消耗,在ios端比较明显,这和引擎内部设计有关,打开一个容器时新增的内存在退出销毁该容器的时候就会被释放,并不会导致内存累积。下图展示的是连续三次打开然后退出容器时的内存变化。
这个issue关注的问题在于: 1.demo验证过,如果启动的是单纯的native的controller,不会有这么大的内存增长; 2.flutter boost作为单引擎方案,虽然启动新容器可能会有内存增长,但是在单引擎的前提下,启动一个新的容器,不应该造成这么大的内存增长; 3.我验证过,即使容器关闭之后,内存也不能完全回到之前的水平。