Android5.0上JNI的GC回收机制

在Android 5.0上出现应用闪退,日志显示JNI错误,本地引用已失效。经过排查,发现是由于在Android 4.4.4之后,GC机制改变,局部引用的jclass在全局使用时会被回收。解决方案是将jclass转换为全局引用,通过NewGlobalRef避免被GC回收。修复所有findclass的实例后,问题得到解决。
摘要由CSDN通过智能技术生成
负责的项目接到反馈说在Android 5.0 上 会闪退;由于目前我们这边没有设备,于是现拿android 4.4.4 开ART模式调试,发现可以正常使用;于是又换成Android 5.0 的模拟器,发现确实会产生闪退问题;log如下:
JNI ERROR (app bug): accessed stale local reference 0xe340001d (index 7 in a table of size 6)
01-27 07:33:33.236: E/art(1200): 0xaee82c00 SpaceTypeMallocSpace begin=0x12c00000,end=0x12eee000,limit=0x16c00000,size=2MB,capacity=64MB,non_growth_limit_capacity=64MB,name="main rosalloc space"]
01-27 07:33:33.236: E/art(1200): 0xaee648a0 allocspace main rosalloc space live-bitmap 3[begin=0x12c00000,end=0x16c00000]
01-27 07:33:33.236: E/art(1200): 0xaee64880 allocspace main rosalloc space mark-bitmap 3[begin=0x12c00000,end=0x16c00000]
01-27 07:33:33.236: E/art(1200): 0xb5059120 SpaceTypeImageSpace begin=0x6fb64000,end=0x70681e18,size=11MB,name="/data/dalvik-cache/arm/system@ fra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值