问答

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

作者:admin 2021-05-07 我要评论

react-native 写的APP, 后台看到不少内存溢出的, 但又想不出是哪里出现问题,因为自己调试的时候也没发现内存暴涨的情况 所以想请教下有什么思路可以排查内存溢...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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
###

从你的描述以及抛出的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哈哈~)

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • react-native 安卓内存溢出排查思路?

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

  • js 调用摄像头可以逆时针旋转90度吗

    js 调用摄像头可以逆时针旋转90度吗

  • react-native 调试时如何监听windows按

    react-native 调试时如何监听windows按

  • js/vue/react 如何把这种数据结构格式

    js/vue/react 如何把这种数据结构格式

腾讯云代理商
海外云服务器