react-native 安卓内存溢出排查思路?

发布于 2022-09-12 22:09:41 字数 521 浏览 37 评论 0

react-native 写的APP, 后台看到不少内存溢出的, 但又想不出是哪里出现问题,因为自己调试的时候也没发现内存暴涨的情况

所以想请教下有什么思路可以排查内存溢出问题呢?

错误大多如下几种:

java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack available
java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available
java.lang.OutOfMemoryError: Failed to allocate a *** byte allocation with 0 free bytes and *** until OOM

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晨曦慕雪 2022-09-19 22:09:41

从你的描述以及抛出的OutOfMemoryError Exception来看,你这大概率是内存泄漏导致内存占用率逐渐爬升最终发生内存溢出,当然也不排除因为某些原因导致短时间内创建了非常多的实例,填满了堆空间,下一个实例创建申请空间时导致内存溢出。
OutOfMemoryError Exception 是在Java SDK 中抛出的,考虑到 RN与原生的交互方式(Bridge)以及平时RN开发中可能会安装依赖native modules 的package,建议你按以下优先级进行排查:

  1. 是否有循环创建组件实例的代码在某些情况下发生了死循环或者说一次性循环创建了非常多的组件实例;
  2. 是否有组件频繁渲染/卸载,并且其中有使用未被销毁的定时器(不一定是 setTimeout
  3. 是否有动态加载的组件并且其中加载了非常大的资源
  4. 是否有使用依赖native modules 的npm 包(在0.60RN版本之前需要 react-native link 的那种),有的话,删掉试试
  5. 是否有引用其他第三方组件库?有的话,删掉试试
  6. 检查代码中有闭包的代码,使用完后销毁闭包
  7. 都不行的话,收拾东西跑路吧~(O(∩_∩)O哈哈~)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文