关于JNI local ref未释放可在tombstones中去查看具体函数
例子一:
死机后拿到tombstones文件,看到 JNI ERROR (app bug): local reference table overflow (max=512)基本可以确认是JNI申请的某些local ref未释放导致的。
再往下看,有dalvikvm打印出来的信息,很多重复的 com.tcl.tvapi.model.DtvPvrEvent,这个说明是jni中申请的DtvPvrEvent的obj
的local ref没有释放导致,我用deletelocalref释放后此问题就解决了。
06-24 15:18:42.000 531 623 E dalvikvm: JNI ERROR (app bug): local reference table overflow (max=512)
06-24 15:18:42.000 531 623 W dalvikvm: JNI local reference table (0x785077b8) dump:
06-24 15:18:42.000 531 623 W dalvikvm: Last 10 entries (of 512):
06-24 15:18:42.000 531 623 W dalvikvm: 511: 0x41e394d8 java.lang.String "EventNotify"
06-24 15:18:42.000 531 623 W dalvikvm: 510: 0x41abb0b8 java.lang.Class<android.util.Log>
06-24 15:18:42.000 531 623 W dalvikvm: 509: 0x420db918 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: 508: 0x420d4cc8 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: 507: 0x420c5010 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: 506: 0x42010ef0 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: 505: 0x41f20b68 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: 504: 0x425cda48 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: 503: 0x420aada0 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: 502: 0x4204d898 com.tcl.tvapi.model.DtvPvrEvent
06-24 15:18:42.000 531 623 W dalvikvm: Summary:
06-24 15:18:42.000 531 623 W dalvikvm: 3 of java.lang.Class (3 unique instances)
06-24 15:18:42.000 531 623 W dalvikvm: 1 of java.lang.String
06-24 15:18:42.000 531 623 W dalvikvm: 508 of com.tcl.tvapi.model.DtvPvrEvent (508 unique instances)
06-24 15:18:42.000 531 623 E dalvikvm: Failed adding to JNI local ref table (has 512 entries)
06-24 15:18:42.000 531 623 I dalvikvm: "Thread-32" prio=6 tid=25 RUNNABLE
06-24 15:18:42.000 531 623 I dalvikvm: | group="main" sCount=0 dsCount=0 obj=0x41e9a178 self=0x730f9a48
06-24 15:18:42.000 531 623 I dalvikvm: | sysTid=623 nice=-2 sched=0/0 cgrp=[no-cpu-subsys] handle=19478948
例子二:
拿到tombstone文件分析:
这个例子中,报错的地方更明亮,dalvikvm直接指明了是com.tcl.factory.service.TService.native_doGetSnCode(Native Method)引起的死机。
01-01 00:00:17.540 526 1053 W dalvikvm: JNI WARNING: input is not valid Modified UTF-8: illegal continuation byte 0x55
01-01 00:00:17.540 526 1053 W dalvikvm: string: '2013129000001鉛'
01-01 00:00:17.540 526 1053 W dalvikvm: in Lcom/tcl/factory/service/TService;.native_doGetSnCode:()Ljava/lang/String; (NewStringUTF)
01-01 00:00:17.570 526 1053 I dalvikvm: "Binder_5" prio=5 tid=68 NATIVE
01-01 00:00:17.570 526 1053 I dalvikvm: | group="main" sCount=0 dsCount=0 obj=0x41f546b8 self=0x77bb1f10
01-01 00:00:17.570 526 1053 I dalvikvm: | sysTid=1053 nice=0 sched=0/0 cgrp=[no-cpu-subsys] handle=2001813616
01-01 00:00:17.570 526 1053 I dalvikvm: | state=R schedstat=( 0 0 0 ) utm=3 stm=0 core=1
01-01 00:00:17.580 526 1053 I dalvikvm: #00 pc 000012a0 /system/lib/libcorkscrew.so (unwind_backtrace_thread+27)
01-01 00:00:17.580 526 1053 I dalvikvm: #01 pc 0005fd08 /system/lib/libdvm.so (dvmDumpNativeStack(DebugOutputTarget const*, int)+35)
01-01 00:00:17.580 526 1053 I dalvikvm: #02 pc 00053b68 /system/lib/libdvm.so (dvmDumpThreadEx(DebugOutputTarget const*, Thread*, bool)+303)
01-01 00:00:17.580 526 1053 I dalvikvm: #03 pc 00053c02 /system/lib/libdvm.so (dvmDumpThread(Thread*, bool)+25)
01-01 00:00:17.580 526 1053 I dalvikvm: #04 pc 00038b7a /system/lib/libdvm.so
01-01 00:00:17.580 526 1053 I dalvikvm: #05 pc 00039f38 /system/lib/libdvm.so
01-01 00:00:17.580 526 1053 I dalvikvm: #06 pc 0003c196 /system/lib/libdvm.so
01-01 00:00:17.580 526 1053 I dalvikvm: #07 pc 000109c6 /tvos/mid_base/lib/libcom_tcl_tv_jni.so
01-01 00:00:17.580 526 1053 I dalvikvm: #08 pc 0001e290 /system/lib/libdvm.so (dvmPlatformInvoke+112)
01-01 00:00:17.580 526 1053 I dalvikvm: #09 pc 0004d410 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+395)
01-01 00:00:17.580 526 1053 I dalvikvm: #10 pc 00038c04 /system/lib/libdvm.so (dvmCheckCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+7)
01-01 00:00:17.580 526 1053 I dalvikvm: #11 pc 000276a0 /system/lib/libdvm.so
01-01 00:00:17.580 526 1053 I dalvikvm: #12 pc 0002b57c /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
01-01 00:00:17.580 526 1053 I dalvikvm: #13 pc 0005fc34 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+271)
01-01 00:00:17.580 526 1053 I dalvikvm: #14 pc 0004cab4 /system/lib/libdvm.so
01-01 00:00:17.580 526 1053 I dalvikvm: #15 pc 00040ae2 /system/lib/libdvm.so
01-01 00:00:17.580 526 1053 I dalvikvm: #16 pc 0004a376 /system/lib/libandroid_runtime.so
01-01 00:00:17.580 526 1053 I dalvikvm: #17 pc 0006786e /system/lib/libandroid_runtime.so
01-01 00:00:17.580 526 1053 I dalvikvm: #18 pc 0001435e /system/lib/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+57)
01-01 00:00:17.580 526 1053 I dalvikvm: #19 pc 00016f5a /system/lib/libbinder.so (android::IPCThreadState::executeCommand(int)+513)
01-01 00:00:17.580 526 1053 I dalvikvm: #20 pc 00017380 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+183)
01-01 00:00:17.580 526 1053 I dalvikvm: #21 pc 0001b1f4 /system/lib/libbinder.so
01-01 00:00:17.580 526 1053 I dalvikvm: #22 pc 00011264 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+111)
01-01 00:00:17.580 526 1053 I dalvikvm: #23 pc 0004795c /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+63)
01-01 00:00:17.580 526 1053 I dalvikvm: #24 pc 00010dca /system/lib/libutils.so
01-01 00:00:17.580 526 1053 I dalvikvm: #25 pc 0000e518 /system/lib/libc.so (__thread_entry+72)
01-01 00:00:17.580 526 1053 I dalvikvm: #26 pc 0000dc04 /system/lib/libc.so (pthread_create+160)
01-01 00:00:17.580 526 1053 I dalvikvm: at com.tcl.factory.service.TService.native_doGetSnCode(Native Method)
01-01 00:00:17.580 526 1053 I dalvikvm: at com.tcl.factory.service.TService.doGetSnCode(TService.java:320)
01-01 00:00:17.580 526 1053 I dalvikvm: at com.tcl.factory.IService$Stub.onTransact(IService.java:310)
01-01 00:00:17.580 526 1053 I dalvikvm: at android.os.Binder.execTransact(Binder.java:351)
01-01 00:00:17.580 526 1053 I dalvikvm: at dalvik.system.NativeStart.run(Native Method)
关于JNI local ref未释放可在tombstones中去查看具体函数相关推荐
- mysql 空位补0_MySQL 删除数据后物理空间未释放
MySQL 删除数据后物理空间未释放 1. 进入数据库目录: cd /var/lib/mysql/ 2. 备份要保存的数据库文件(切记!必须备份!部分数据库文件需要恢复!) mysqldump -h ...
- mysql .myd_关于mysql 删除数据后(.MYD,MYI)物理空间未释放
关于mysql 删除数据后物理空间未释放 OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE ...
- redis资源未释放引发的问题
前两天遇到了redis资源未释放的问题,在博客上面看到有人也遇到了一样的问题,特此转载,并附上自己的心得体会. 一.redis资源未释放的起因: N年前,在修改一个古老程序时,不小心把redis释放的 ...
- Linux删除文件后空间未释放问题处理方法
前言 当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放,很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系统的回收站一样,删除只是逻辑删 ...
- Linux fs清理文件,linux找出已经删除但磁盘空间未释放的大文件并清空
linux找出已经删除但磁盘空间未释放的大文件并清空 1.找出已经删除但磁盘空间未释放的文件 如果文件已经删除,但实际的磁盘空间未释放,这个时候文件句柄fd相关信息还在内存中,可以通过lsof命令找出 ...
- Ticker 未释放导致的 CPU 占用过高
问题描述 2018-12-15, 辅导服务一台服务器的 TCP 连接数忽上忽下(如下图), 上下浮动在400~500的数量. 而此时 CPU 一直在满负载, 内存占用很高(如下图). 导致用户无法正常 ...
- git pull报“unable to update local ref”解决方案
使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误. 除了重新clone一份代码外,还可以使用如下解决方案: 1. ...
- 使用CRT调试内存分配堆来找出未释放的内存空间
忘记释放已经分配的内存是一种常见的编程错误,当然我指的是在C++编程当中,例如下面的代码里面就存在一个忘记释放内存的编程错误.我个人觉得忘记释放内存的编程错误是不可避免的,毕竟程序员都是人,困了,心情 ...
- 解决矩池云GPU显存未释放问题
很多用户反馈说终止程序之后,显存依然被占用,这里我们提供了两种解决方案,帮助用户解决这个问题. nvidia-smi查看 我们可以先用如下命令 nvidia-smi 查看一下当前GPU进程情况. _ ...
最新文章
- 软件测试中的α测试、β测试和λ测试
- Android逆向与病毒分析
- CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
- 在php中使用kind,KindEditor 4.x在PHP中的应用实例!
- Macbook怎么关闭磁盘“未正确推出”提示
- lsm mysql_LSM设计一个数据库引擎
- 软件_迅速增加博客友情链接[博]
- volatile指令重排_volatile可见性和指令重排
- Extjs 4.1 学习笔记(二)(panel 自适应高度)
- Web—sublime安装包、自动生成代码、使用Emmet插件快速编写CSS样式、emmet(快速开发)的使用
- JAVA继承类初始化顺序
- 可靠性试验(环境试验、机械试验、HALT试验等)
- Fully-hierarchical fine-grained prosody modeling for interpretable speech synthesis
- win10服务器系统要设置要密码是什么,云服务器win10系统初始密码
- 7-46 新浪微博热门话题 (30分)
- 盘盈的存货一般应作为什么处理
- MySQL用户权限详细汇总
- jenkins配置报错,javax.servlet.ServletException: java.lang.RuntimeException: ssh executable not found.
- 流氓并不可怕,就怕流氓有文化 -- 这是一个知识改变命运的例子
- 游戏AI paper记录
热门文章
- mysql计算年休假天数_年休假的工作年限和天数如何计算
- jenkins执行报错 Finished: UNSTABLE
- AdaGrad、RMSProp、Adam优化器
- Faster Transformer
- 阿里面试题:Pandas中合并数据的5个函数,各有千秋!
- Golang实现优雅退出
- 关于微信服务号自定义发送给朋友/分享到朋友圈, 发送/分享失败的一些问题及解决方式
- linux nginx htaccess,nginx支持.htaccess文件实现rewrite伪静态
- Bootstrap—标签label和徽章badge
- MySql 新增字段内容由原字段提供