例子一:

死机后拿到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中去查看具体函数相关推荐

  1. mysql 空位补0_MySQL 删除数据后物理空间未释放

    MySQL 删除数据后物理空间未释放 1. 进入数据库目录: cd  /var/lib/mysql/ 2. 备份要保存的数据库文件(切记!必须备份!部分数据库文件需要恢复!) mysqldump -h ...

  2. mysql .myd_关于mysql 删除数据后(.MYD,MYI)物理空间未释放

    关于mysql 删除数据后物理空间未释放 OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE ...

  3. redis资源未释放引发的问题

    前两天遇到了redis资源未释放的问题,在博客上面看到有人也遇到了一样的问题,特此转载,并附上自己的心得体会. 一.redis资源未释放的起因: N年前,在修改一个古老程序时,不小心把redis释放的 ...

  4. Linux删除文件后空间未释放问题处理方法

    前言 当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放,很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系统的回收站一样,删除只是逻辑删 ...

  5. Linux fs清理文件,linux找出已经删除但磁盘空间未释放的大文件并清空

    linux找出已经删除但磁盘空间未释放的大文件并清空 1.找出已经删除但磁盘空间未释放的文件 如果文件已经删除,但实际的磁盘空间未释放,这个时候文件句柄fd相关信息还在内存中,可以通过lsof命令找出 ...

  6. Ticker 未释放导致的 CPU 占用过高

    问题描述 2018-12-15, 辅导服务一台服务器的 TCP 连接数忽上忽下(如下图), 上下浮动在400~500的数量. 而此时 CPU 一直在满负载, 内存占用很高(如下图). 导致用户无法正常 ...

  7. git pull报“unable to update local ref”解决方案

    使用git pull拉取代码的时候,无法拉取最新代码,报"unable to update local ref"错误. 除了重新clone一份代码外,还可以使用如下解决方案: 1. ...

  8. 使用CRT调试内存分配堆来找出未释放的内存空间

    忘记释放已经分配的内存是一种常见的编程错误,当然我指的是在C++编程当中,例如下面的代码里面就存在一个忘记释放内存的编程错误.我个人觉得忘记释放内存的编程错误是不可避免的,毕竟程序员都是人,困了,心情 ...

  9. 解决矩池云GPU显存未释放问题

    很多用户反馈说终止程序之后,显存依然被占用,这里我们提供了两种解决方案,帮助用户解决这个问题. nvidia-smi查看 我们可以先用如下命令 nvidia-smi 查看一下当前GPU进程情况. _ ...

最新文章

  1. 软件测试中的α测试、β测试和λ测试
  2. Android逆向与病毒分析
  3. CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
  4. 在php中使用kind,KindEditor 4.x在PHP中的应用实例!
  5. Macbook怎么关闭磁盘“未正确推出”提示
  6. lsm mysql_LSM设计一个数据库引擎
  7. 软件_迅速增加博客友情链接[博]
  8. volatile指令重排_volatile可见性和指令重排
  9. Extjs 4.1 学习笔记(二)(panel 自适应高度)
  10. Web—sublime安装包、自动生成代码、使用Emmet插件快速编写CSS样式、emmet(快速开发)的使用
  11. JAVA继承类初始化顺序
  12. 可靠性试验(环境试验、机械试验、HALT试验等)
  13. Fully-hierarchical fine-grained prosody modeling for interpretable speech synthesis
  14. win10服务器系统要设置要密码是什么,云服务器win10系统初始密码
  15. 7-46 新浪微博热门话题 (30分)
  16. 盘盈的存货一般应作为什么处理
  17. MySQL用户权限详细汇总
  18. jenkins配置报错,javax.servlet.ServletException: java.lang.RuntimeException: ssh executable not found.
  19. 流氓并不可怕,就怕流氓有文化 -- 这是一个知识改变命运的例子
  20. 游戏AI paper记录

热门文章

  1. mysql计算年休假天数_年休假的工作年限和天数如何计算
  2. jenkins执行报错 Finished: UNSTABLE
  3. AdaGrad、RMSProp、Adam优化器
  4. Faster Transformer
  5. 阿里面试题:Pandas中合并数据的5个函数,各有千秋!
  6. Golang实现优雅退出
  7. 关于微信服务号自定义发送给朋友/分享到朋友圈, 发送/分享失败的一些问题及解决方式
  8. linux nginx htaccess,nginx支持.htaccess文件实现rewrite伪静态
  9. Bootstrap—标签label和徽章badge
  10. MySql 新增字段内容由原字段提供