性能问题
我们的ReactNative应用程序unblnd.com/app存在性能问题。这款应用在大多数Android手机上使用几分钟后(安装后)就开始变慢了。
做了些什么?
A) Api请求
有些api请求有点慢,但是查询已经得到改进。查询不会影响iPhone上的应用程序性能。可以得出的结论是,api请求并没有使应用程序滞后。
我们将暂时提升AWS中的服务器,以确保这不会导致问题。
B)导航
我们发现了一些消息来源,说明了反应-导航v5将是缓慢的。因此,我们查看了导航堆栈,但是使用react导航v4和v5获得了类似的缓慢性能:
@react-navigation/native: ^5.9.4
@react-navigation/stack: ^5.14.5
---
react-navigation: ^4.4.4
react-navigation-stack": ^2.10.4C)缓存/内存
当使用应用程序时,缓存大小从0MB增加到12 0MB。从3MB的缓存大小来看,这个应用程序可能已经慢下来了。由于其他应用程序可以占用1GB以上的缓存数据大小,这似乎值得怀疑。
D( React )
我们有一个广泛的聊天系统。与聊天相关的所有屏幕都封装在一个react上下文中。我们一直在将存储的数据清理到上下文中,但是对于没有在上下文中缓存那么多聊天数据的用户来说,应用程序可能会比较慢。因此,太多的重复呈现会引起问题吗?
<ChatContext.Provider value={{...}}>
<Stack.Navigator>
<Stack.Screen ...>
x 20
</Stack.Navigator>
</ChatContext.Provider>在反应环境中有20个屏幕。在上下文方面有什么好的做法吗?
去做:
E)监测
我们开始使用哨兵监测。没有提出任何具体问题。在性能范围内,只显示http请求。有时它只是声明导航,有时则是缺少集成。
使用FlatList我们得到
VirtualizedLists不应该嵌套在具有相同方向的普通ScrollViews中,因为它可以破坏窗口和其他功能--使用另一个虚拟化with支持的容器。
我们可以尝试解决这个问题,但这不会导致整个应用程序的导航受阻吗?
F)内存泄漏
最明显的症状。但是很难找出是什么导致了这样的内存泄漏。
在Sentry里面我们找到了一条关于内存泄漏的线索。我们刚刚禁用了这个组件,但是Android手机仍然很慢。

指导
我们一直在尝试和修复许多不同的部分。有谁有建议、想法、建议来找出我们是什么导致Android手机慢下来的?
一般信息
npmPackages: react: 17.0.1 react原生: 0.64.2
发布于 2021-08-23 19:57:40
你应该分析一下你的应用程序,看看是什么东西减慢了速度。你说过只有几分钟后才会开始变慢,我想我会看看这是否发生在一些可重复的事件之后。是否只有当你打开这个屏幕,或者每次打开时才会发生。我同意你的观点,这闻起来像是内存泄漏。
如果已经使用Sentry,还可以使用Sentry.Profiler对组件进行配置,以查看每个生命周期方法所需的时间。
https://stackoverflow.com/questions/68605988
复制相似问题