Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

flutter_boost的内存占用是否正常 #933

Open
vimerzhao opened this issue Dec 10, 2020 · 5 comments
Open

flutter_boost的内存占用是否正常 #933

vimerzhao opened this issue Dec 10, 2020 · 5 comments

Comments

@vimerzhao
Copy link

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.

@vimerzhao
Copy link
Author

图片如果没有加载出来可以直接看以下几个链接:
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

@foxsofter
Copy link

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

@KevinGong2013
Copy link

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

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

@vimerzhao
Copy link
Author

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

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

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

@vimerzhao
Copy link
Author

@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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants