解决 react-native报错java.lang.OutOfMemoryError: Could not allocate JNI Env

Android OOM 问题探究 -- 从入门到放弃 最近客户反馈了一些OOM的问题,很早之前自己也有简单了解过OOM的知识,但时间久远,很多东西都记不清了。现在遇到这个OOM问题,也即趁此搜索了一些资料,对OOM问题做一些探究,把资料记录于此,一遍后续查阅。本文内容大量借鉴参考了网络上经典文章的内容,站在巨人的肩膀上登高望远!注:以下分析基于 Android R source。 阅读详情

问题复现:

打包生成用rn写的apk安装在手机上之后,首次进入APP之后没问题,再次进入就闪退,接着就再也进不去了,这个问题困扰了我三四天了吧,我的这个描述能看懂吗?我是个智障吗?


报错代码:

查找了相关命令之后用adb logcat AndroidRuntime:E *:S来打印出错误,发现是内存泄露的问题。

PS G:\RN1workspace\TigerGameApp> adb logcat AndroidRuntime:E *:S
--------- beginning of system
--------- beginning of main
--------- beginning of crash
08-16 19:27:42.223 23377 29132 E AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
08-16 19:27:42.223 23377 29132 E AndroidRuntime: Process: com.tigergameapp, PID: 23377
08-16 19:27:42.223 23377 29132 E AndroidRuntime: java.lang.OutOfMemoryError: Could not allocate JNI Env
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at java.lang.Thread.nativeCreate(Native Method)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at java.lang.Thread.start(Thread.java:1063)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:921)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.ConnectionPool.put(ConnectionPool.java:135)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.OkHttpClient$1.put(OkHttpClient.java:149)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:188)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:129)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:98)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124)
08-16 19:27:42.223 23377 29132 E AndroidRuntime:        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)

解决过程:

向朋友(前端大佬)请教了之后,他定位到是定时器函数出了问题,于是我就自吸想想到底是哪块的问题,返回代码继查看,发现在设置了定时器之后并没有清除定时器,不知道啥情况,把清除定时器的代码给注释了。于是解开注释重新打包安装,发现是可以的,随之问题也就解决了。


RN中文网的解释:

我们发现很多 React Native 应用发生致命错误(闪退)是与计时器有关。具体来说,是在某个组件被卸载(unmount)之后,计时器却仍然在运行。要解决这个问题,只需铭记在unmount组件时清除(clearTimeout/clearInterval)所有用到的定时器即可:

import React, { Component } from "react";

export default class Hello extends Component {
  componentDidMount() {
    this.timer = setTimeout(() => {
      console.log("把一个定时器的引用挂在this上");
    }, 500);
  }
  componentWillUnmount() {
    // 请注意Un"m"ount的m是小写

    // 如果存在this.timer,则使用clearTimeout清空。
    // 如果你使用多个timer,那么用多个变量,或者用个数组来保存引用,然后逐个clear
    this.timer && clearTimeout(this.timer);
  }
}

 

FANUC机器人有关动作速度倍率的相关系统变量-解释说明 FANUC机器人有关动作速度倍率的相关系统变量-解释说明 1.$SHFTOV_ENB 默认值:0 名称:位移倍率的有效/无效 含义:位移倍率功能,通过按住SHIFT键的同时按下倍率键,将速度倍率更改为5档 设定值:有效1; 无效0. 有SHFIT键:微速–低速–5%–50%–100% 2.MCRGRP[GROUP].MCR_GRP[GROUP].MCRG​RP[GROUP].PRGOVERRIDE 默认值:100 名称:程序倍率 含义:设定程序再生时的、机器人动作速度比率 设定值:0~100(%) 3.S 阅读详情

相关推荐

ICG setup timing violation介绍?

门控时钟(clock gating)在RTL级电路设计过程中进行低功耗优化常用方法,能够有效降低动态功耗(翻转功耗)。Clock gating cell 可以由与门,与非门,或门或者或非门构成,但很容易产生Glitch。在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating。 下图展示了glitch的产生原因 在CTS时钟树综合的时候,ICG不会被看作sink,通常放置在source点附近,因此就会出现如上图这种结果。上图可以看出,在分析DFF到ICG的setup timing

m0_61003348的博客 9806

java.lang.OutOfMemoryError: Could not allocate JNI Env

最近有一些OOM的错误上报 java.lang.OutOfMemoryError: Could not allocate JNI Env 极少量的 java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Out of memory 一个典型的用户状态是这样的 用户使用时长 1小时56分11秒 前后台状态 后台 设备机型 OPPO R9S 系统版本 Android 6.0.1,level 23 可用内存大小 1.97 G

1577

ubuntu18.04安装xenomai3.1(百分百成功版)

ubuntu18.04安装xenomai3.1(百分百成功版),保姆级教学!!!

h542812556sdu的博客 2063

java.lang.OutOfMemoryError:无法始终分配 JNI Env android java

java.lang.OutOfMemoryError:无法始终分配 JNI Env android java at java.lang.Thread.nativeCreate(Native Method) at java.lang.Thread.start(Thread.java:1063) at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:921) at java.util.concurrent.Thr

吕氏春秋i 1744

Cesium实战:如何在前端直接渲染TIFF影像(附完整代码与避坑指南)

本文详细介绍了如何在前端利用Cesium直接加载和渲染TIFF影像的完整技术方案。针对TIFF格式的地理影像数据,文章提供了从文件解析、坐标转换到像素处理与Cesium集成的全流程代码实现,并分享了性能优化与常见问题的避坑指南,帮助开发者高效实现三维地理可视化。

weixin_29290947的博客 314

Python广度优先搜索BFS - 蓝桥13届省赛污染海域

请问这片N * M海域中有几块是没被污染的独立海域(没被污染的独立海域是指该块海域上下左右被已污染的海域包围,且N * M以外的海域都为已被污染的海域)有一片海域划分为N * M个方格,其中有些海域已被污染(用0表示),有些海域没被污染(用1表示)。第二行开始输入N行,每行M个数字(数字只能为1或者0,1表示没被污染的海域,0表示已被污染的海域)这块4 * 5的海域,有3块海域(绿色)没被污染,因为每一块的上下左右都被污染的海域包围。输出一个整数,表示N * M的海域中有几块是没被污染的独立海域。

m0_69865359的博客 264

idea 项目启动报错解决,java.lang.OutOfMemoryError:Java heap space

Idea ;java.kang.OutOfMemoryError:Java heap space ; tomcat;zookeeper

lvyinxiazheyang的博客 2990

ACPWorkbench_for_BP10

ADC支持9种采样率:8000Hz、11025Hz、12000Hz、16000Hz、22050Hz、24000Hz、32000Hz、44100Hz 以及 48000Hz。选择5种MCLK源时, 模块内部的MCLK源无效。I2S 采样率支持:8K,11.025K,12K,16K, 22.05K, 24K, 32K, 44.1K, 48K, 88.2K, 96K, 176.4K 和 192K。DAC采样率支持:8K,11.025K,12K,16K,22.05K, 24K, 32K, 44.1K和48K。

dddds222_的博客 4551

java.lang.OutOfMemoryError问题的解决

java.lang.OutOfMemoryError问题的解决 一、复习概念 1、java.lang.OutOfMemoryError有几种 2、内存泄露和内存溢出 内存泄露:程序在申请内存后,无法自己释放已申请的内存空间,始终占用着内存,即被分配的对象可达但无用。 内存溢出::程序在申请内存时,没有足够的大内存供申请者使用。此时就会报错OutOfMemoryError,即所谓的内存溢出。 二、我的问题 报错信息:java.lang.OutOfMemoryError: Java heap space ,意思

qq_47346664的博客 2万+

Cursor使用教程:用 Cursor 创建第一个 Java 项目

Cursor是一款基于VS Code的AI编程编辑器,专为开发者设计。安装前需确保JDK 8+、Maven 3.8+等环境配置,支持Windows系统。编辑器提供中文界面选项,可通过扩展市场安装语言包。创建Java项目支持手动和AI提示词两种方式:手动需创建目录结构并编写代码;AI方式则通过自然语言描述快速生成项目框架和代码。标准Java项目包含src/main/java主代码目录、src/test/java测试目录及pom.xml等配置文件。Maven项目中,pom.xml是核心配置文件,管理项目依赖与构

博客 3547

精度0.01%决定续航多20km|新能源汽车研发测试:功率分析仪到底有多硬核?

新能源汽车测试、功率分析仪、电驱系统、效率MAP、谐波THD、GB/T18488、CLTC工况、三电测试、台架标定、能量流分析。中的核心作用,用公式、思维导图、实战金句与避坑指南,帮研发测试人员把准数据、提效率、降返工,看完就能落地用。点击关注,进公众号主页查看历史文章,**台架接线图、效率MAP模板、GB/T18488测试清单等。优化弱磁/调制策略,高效区占比提升5%,CLTC续航直接+8~20km。同样工况,两次数据差0.8%,报告根本没法交。结果:数据飘、定位慢、反复返工、认证不过。

优快云-新能源汽车研发测试专业博主 169

记一次艰难的OutOfMemoryError:Could not allocate JNI Env问题排查

当我们看到这个错误的时候第一反应是不是内存泄露导致程序无法申请到内存而导致的,然而查下来的事实告诉我并不是的…

上辈子作恶多端,这辈子写前端。 4038

7.1华为OD机试真题 新系统 - 仓库盘点 (Java/Py/C/C++/Js/Go)

7.1华为OD机试真题 新系统 - 仓库盘点 (Java/Py/C/C++/Js/Go)

算法大师! 507

pthread_create创建线程失败问题排查

pthread_create创建线程失败问题排查

“点点”专栏 6887

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

内存泄漏OOM

本文发现了一类OOM(OutOfMemoryError),这类OOM的特点是崩溃时java堆内存和设备物理内存都充足,下文将带你探索并解释这类OOM抛出的原因。 关键词: OutOfMemoryError, OOM,pthread_create failede,Could not allocate JNI Env 一、引子 对于每一个移动开发者,内存是都需要小心使用的资源,而线...

whyqcwy的专栏 797

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java.lang.OutOfMemoryError: Coldnot not allocate JNI Env

今天 遇到了一个java.lang.OutOfMemoryError :Coldnot not allocate JNI Env一直搞不好,内存泄露。 报错信息如下: 先说一下 我的需求: 某一个页面需要 每隔三秒进行刷新,刷新的数据是从网络上面拿下来的。而我每次刷新的时候 要十五条数据,所以我没隔三秒就会去请求15 次数据。 分析一下异常的原因: 原本 我以为是线程的问题,因为我用的是异步...

345丶 5688

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android 内存溢出 java.lang.OutOfMemoryError: Coldnot not allocate JNI Env

Android 内存溢出 java.lang.OutOfMemoryError: Coldnot not allocate JNI Env!

吕氏春秋i 1464

Probe:Android线上OOM问题定位组件

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。BAT大厂面试题、独家面试工具包,资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter,《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

2401_84149875的博客 1234

Throwing OutOfMemoryError “Could not allocate JNI Env“

com.moreunion.zhenghao I/art: Background sticky concurrent mark sweep GC freed 74917(4MB) AllocSpace objects, 15(580KB) LOS objects, 7% free, 59MB/64MB, paused 6.228ms total 59.379ms

天涯海风的博客 647

Android进阶性能调优;不可思议的OOM

我的面试经验分享可能不会去罗列太多的具体题目,因为我依然认为面试经验中最宝贵的不是那一个个具体的题目或者具体的答案,而是结束面试时,那一刻你的感受以及多天之后你的回味~很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我整理了一些资料,需要的可以免费分享给大家在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含。

2401_84121615的博客 980

解决Cannot allocate memory服务器内存不足问题

解决方法:通过ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head取进程占用内存(MEM)最高的前10个进程,遇到的问题:启动项目报错 failed;error='Cannot allocate memory' (errno=12)服务器内存不足。杀死残留进程,free查看内存占用情况,内存已释放,问题解决。通过:kill -9 进程id。

weixin_47741072的博客 7912

react native打包时出现内存溢出的问题

通过使用 --max-old-space-size 标志分配更多内存来解决这个问题(只适用于android)

Superfish_v的博客 1078

Android系统及应用问题定位方法

1. 分析问题的思路 从系统入手,主要从以下几方面入手进行分析: 内存 线程 句柄 1.1 分析内存 查看指定进程的内存使用状态 $ procrank | grep name procrank命令输出说明: VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存 RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存) ...

MyArrow的专栏 1207

java.lang.OutOfMemoryError及解决方法

主要有3种比较常见的OutOfMemory Error: Java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: GC overhead limit exceeded 1. java.lang.OutOfMemoryErr...

az44yao的专栏 1万+

Android | 关于 OOM 的那些事

Android 系统对每个app都会有一个最大的内存限制,如果超出这个限制,就会抛出 OOM,也就是Out Of Memory。本质上是抛出的一个异常,一般是在内存超出限制之后抛出的。

345丶 1955

java.lang.OutOfMemoryError异常解决方法

2010-08-26 10:51 java.lang.OutOfMemoryError异常解决方法 java.lang.OutOfMemoryError异常解决方法 原因: 常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循

whatIsJava 668
上一篇: 解决react-native警告之propType废弃问题
下一篇: JavaScript作用域之for循环
蓝罗人
博客等级 码龄9年 4粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值