flutter_boost的内存占用是否正常

3npbholx  于 2022-10-25  发布在  Flutter
关注(0)|答案(5)|浏览(303)

Steps to Reproduce

A small application to reproduce the bug(最小化可复现的demo)

这里我想测试一下flutter boost在native/flutter页面来回切换时的性能,于是我设计了这么一个场景,在demo里面轮流启动10次两种页面,并dump出内存信息,发现flutter boost的内存占用如下:

同时,我写了一个demo,也是轮流启动10次,内存占用如下:

考虑到我的demo是1.22版本的,于是为了控制变量,我把demo降级到了1.17版本,和boost一样,内存占用如下:

我的问题是boost的复用似乎让内存占用更大了,尤其是EGL mtrack这块,这样是否正常?

以下是我测试的核心脚本:

pname="com.taobao.idlefish.flutterboostexample"
adb shell am start -n $pname/$pname.MainActivity
for i in {1..10} ; do
    sleep 3
    echo "$i dump native"
    adb shell dumpsys meminfo $pname
    sleep 1
    adb shell input tap 200 1450
    sleep 3
    echo "$i dump flutter"
    adb shell dumpsys meminfo $pname
    sleep 1
    adb shell input tap 200 950
done

此外,我发现thrio这个库在同样的测试中内存增长非常缓慢,比较符合engine复用的预期:

不知道你们是否有做过这种测试,还是我的测试方法有不合理之处?

Flutter Boost Version
Target Platform:
Target OS version/browser:
Devices:

Logs

add your crash log or something else.

b91juud3

b91juud31#

图片如果没有加载出来可以直接看以下几个链接:
flutter boost结果: http://images.vimerzhao.top/flutter_boost.png
不复用1.22版本: http://images.vimerzhao.top/official.png
不复用1.17版本: http://images.vimerzhao.top/official_1.17.png
thrio: http://images.vimerzhao.top/thrio.png

unhi4e5o

unhi4e5o2#

@vimerzhao 选择比较的点非常准,避开了连续打开多个 Flutter 页面 thrio 从原理层面带来的内存优势

vwkv1x7d

vwkv1x7d3#

@vimerzhao 加一个case, 在2个版本( flutter_boostthrio )的demo中分别独立打开10个native页面dump内存作为基准。

当前这种情况没有可比较性,需要避免native代码实现层面的差异

uqdfh47h

uqdfh47h4#

@vimerzhao 加一个case, 在2个版本( flutter_boostthrio )的demo中分别独立打开10个native页面dump内存作为基准。

当前这种情况没有可比较性,需要避免native代码实现层面的差异

都是demo代码,native页面只有几个UI按钮,应该不会影响这个问题的本质。

ozxc1zmp

ozxc1zmp5#

@vimerzhao 加一个case, 在2个版本( flutter_boostthrio )的demo中分别独立打开10个native页面dump内存作为基准。

当前这种情况没有可比较性,需要避免native代码实现层面的差异

我测试了以下,实际上你说的这种情况,boost的内存占用更低

thrio还要高一点

但是轮流启动后,thrio波动明显更小

图片如果加载不出来,直接点链接
http://images.vimerzhao.top/boost_native.png

http://images.vimerzhao.top/thrio_native.png

相关问题