当前位置:网站首页>A scheme to improve the memory utilization of flutter
A scheme to improve the memory utilization of flutter
2020-11-08 10:29:00 【InfoQ】
background
The image scheme we use is a self-developed external texture scheme :
- Android Side create SurfaceTexture, adopt FlutterJNI Sign up to Flutter engine in , Finally back to texture id to Flutter application layer , Application layer usage Texture Widget and textue id To show the texture of the image .
- Texture data is in Android Side , adopt OpenGL Write the image texture to SurfaceTexture, And then through Flutter engine Shared memory in , Passing texture data to the application layer , Finally handed over to Skia Rendering .

The problem is : Flutter The texture data of the application layer is not cached , Every time you need to put Bitmap Data is rendered into textures , Give it back Flutter Application layer usage .Native Image loading will cache memory ,Flutter The image library provided by itself also has a cache , this 2 The caches are isolated from each other , It takes up a lot of memory . and Flutter The image cache is basically a local resource map , And we Flutter Most of the pages are actually external texture images downloaded from the Internet , This leads to low utilization of cache resources .
analysis
For the above 3 A question , Let's get rid of technology and implement , Suppose you want to solve this 3 A question , What is the ideal solution :
- Texture has no cache , Then we add a texture memory cache in the application layer to solve the problem .
- When the upper application layer has already cached the texture , that Native On the side Bitmap Memory cache can also be removed , Keep only the disk cache of image resources .
- Whole App Memory cache , Only texture caching ,Flutter Of ImageCache cache , In order to avoid the waste of memory resources , Will this 2 One cache is combined into one
Link to the original text :【https://www.infoq.cn/article/4t9HrwJFvRh41X2328Gy】. Without the permission of the author , Prohibited reproduced .
版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
边栏推荐
- Fgagt: flow guided adaptive graph tracking
- python学习 day1——基础学习
- Search and replace of sed
- 来自不同行业领域的50多个对象检测数据集
- Flink's sink: a preliminary study
- 比Python快20%,就问你兴不兴奋?
- Close to the double 11, he made up for two months and successfully took the offer from a large factory and transferred to Alibaba
- laravel8更新之速率限制改进
- Rust:命令行参数与环境变量操作
- Installing MacOS 11 Big Sur in virtual machine
猜你喜欢

How can a technician take over a complex system?

Visual Studio 2015 未响应/已停止工作的问题解决

Spotify是如何推动数据驱动决策的?

一个方案提升Flutter内存利用率

Astra: the future of Apache Cassandra is cloud native

vivoS7e和vivoS7的区别 哪个更值得入手

双向LSTM在时间序列异常值检测的应用

Unparseable date: 'mon Aug 15 11:24:39 CST 2016', time format conversion exception

虚拟机中安装 macOS 11 big sur

成功解决An error ocurred while starting the kernel
随机推荐
Flink's sink: a preliminary study
来自不同行业领域的50多个对象检测数据集
[original] about the abnormal situation of high version poi autosizecolumn method
2020-11-05
搜索引擎的日常挑战_4_外部异构资源 - 知乎
AMD Zen3首发评测:频率超5GHz,IPC提升不止19%,这次真的Yes了 - 知乎
laravel8更新之速率限制改进
游戏优化性能杂谈(十一) - 知乎
VC + + specified directory file output by time
python小工具:编码转换
It's 20% faster than python. Are you excited?
C++在C的基础上改进了哪些细节
vivoS7e和vivoS7的区别 哪个更值得入手
The difference between vivoy 73s and glory 30 Youth Edition
Second assignment
学习小结(关于深度学习、视觉和学习体会)
Adobe Prelude /Pl 2020软件安装包(附安装教程)
Flink's sink: a preliminary study
Julia 是如何风靡起来的?
第二次作业