Android程序崩溃调试案例:Reference table overflow

本文详细介绍了Android程序由于JNI调用不当引发的引用表溢出问题,通过日志分析定位到定时器线程中的JNI函数,发现GetByteArrayElements使用后未释放。修复方法是在返回前释放buffer对象,修改后的代码解决了崩溃问题。
摘要由CSDN通过智能技术生成

问题描述:
起初发现一段程序在运行一段时间后发生崩溃。经过多次测试,发现程序规律性地每持续运行30分钟必发生崩溃问题。崩溃时log记录到如下内容:

ReferenceTable overflow (max=1024)
JNI pinned array reference table (0x6080b458) dump:
  Last 10 entries (of 1024):
     1023: 0x423b76d0 int[] (1 elements)
     1022: 0x4209cea0 int[] (1 elements)
     1021: 0x4209c890 int[] (1 elements)
     1020: 0x42242198 int[] (1 elements)
     1019: 0x421b7b60 int[] (1 elements)
     1018: 0x420c0e08 int[] (1 elements)
     1017: 0x42107c18 int[] (1 elements)
     1016: 0x421078e8 byte[] (1 elements)
     1015: 0x42116a18 int[] (1 elements)
     1014: 0x42116408 int[] (1 elements)
  Summary:
        1 of byte[] (1 elements)
     1023 of int[] (1 elements) (1023 unique instances)
Failed adding to JNI pinned array ref table (1024 entries)
"main" prio=5 tid=1 RUNNABLE
  | group="main" sCount=0 dsCount=0 obj=0x417f5de0 self=0x417e44a8
  | sysTid=7820 nice=0 sched=0/0 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值