使用大量内存来反应原生iOS应用

时间:2018-02-16 23:30:34

标签: ios react-native memory memory-management instruments

我正在构建我的第一个反应原生ios应用程序。此应用程序的主要功能是向服务器发出请求,获取数据并在FlatList中呈现该数据。在初始加载时,将呈现FlatList内的15个列表项,当用户向下滚动时,每次用户到达列表底部时,都会添加15个列表项。呈现的列表项总数为500。

我一直在使用Instruments分析我的应用程序,虽然看起来没有内存泄漏,但该应用程序正在使用大量内存来呈现列表。

在下面的图片中,您可以看到分配总数(超过300万),以及总字节数和持久字节数。下面的监控只持续了一分多钟,您在图表中看到的每一步都是当用户到达列表底部时,加载了更多数据。

在1分钟内,使用的内存超过700MiB,178MiB持久存在。对于简单的FlatList,这似乎很高。我误解了什么吗?

instruments

以下是render()的{​​{1}}方法:

FlatList

我不确定是什么导致如此高的内存使用率。我使用redux和redux-persist来存储和改变数据,但最不敏感的功能是向服务器发出请求。有谁知道如何减少或修复这种大量内存消耗?

1 个答案:

答案 0 :(得分:0)

我遇到了一个场景,我应该渲染超过5000行。 我使用https://github.com/Flipkart/recyclerlistview处理此问题 你需要在后台应用背景提取的逻辑,比如从网上获取前100行,你需要在后台获取下一批,即100行数据,滚动到80行。

onScroll={({nativeEvent}) => {

                            this.lastScrollPosition = nativeEvent.contentOffset.y;
                            const isToLoadNextBatch = this.currentScrollPosition(nativeEvent);
                            this.onScrollPosition(isToLoadNextBatch);

                        }}
相关问题