主题 : 使用libfriendlyarm-hardware.so,长时间并大数据量进行串口通信,程序就会死掉 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 90763
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2013-04-24
最后登录: 2013-11-18
楼主  发表于: 2013-08-21 09:26

 使用libfriendlyarm-hardware.so,长时间并大数据量进行串口通信,程序就会死掉

今天使用了下友善的这个库,的确挺方便,但我测试时发现一个问题,如果使用该库,长时间并大数据量进行串口通信,程序的logcat就会出现
05-10 17:57:10.820: WARN/dalvikvm(1291): ReferenceTable overflow (max=1024)
。。。
05-10 17:57:10.820: WARN/dalvikvm(1291): Last 10 entries in JNI pinned array reference table:
。。。
05-10 17:57:10.830: ERROR/dalvikvm(1291): Failed adding to JNI pinned array ref table (1024 entries)
。。
05-10 17:57:10.970: ERROR/dalvikvm(1291): VM aborting
整个Activity就死掉退出了。
级别: 新手上路
UID: 90763
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2013-04-24
最后登录: 2013-11-18
1楼  发表于: 2013-08-21 09:33
我所用的是购买tiny210v2时安好android系统文件里的libfriendlyarm-hardware.so。

网上查找的:

JNI中通过java传过来的点的集合的对象创建C++点集合的对象,其中一段代码如下:
--------------------------------------------------
jclass objclass = env->GetObjectClass(objPoint);

jfieldID id = env->GetFieldID(objclass, ..., ...);
point.x = env->GetIntField(objPoint, id);

id = env->GetFieldID(objclass, ..., ...);
point.y = env->GetIntField(objPoint, id);
--------------------------------------------------
这样循环可以创建251个点,但是到第252次调用上述代码的时候又出现最上面的错误。
在网上查了一下,return前加入一句:
env->DeleteLocalRef(objclass);


可是现在没有源代码,我应该怎么解决呀?
还是说更新后的这个库已经解决了这个问题呀?
求版主解惑呀?
级别: 新手上路
UID: 90763
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2013-04-24
最后登录: 2013-11-18
2楼  发表于: 2013-08-21 10:02
我已经知道了,用更新后的该库就行了,估计也是把代码中的加入了关于空间释放。
级别: 新手上路
UID: 96519
精华: 0
发帖: 15
金钱: 85 两
威望: 17 点
贡献值: 0 点
综合积分: 30 分
注册时间: 2013-09-18
最后登录: 2013-10-09
3楼  发表于: 2013-09-27 11:56
更新后的库在哪儿啊?可否参考一下你的程序。谢谢
级别: 新手上路
UID: 88193
精华: 0
发帖: 22
金钱: 110 两
威望: 22 点
贡献值: 0 点
综合积分: 44 分
注册时间: 2013-03-05
最后登录: 2014-05-08
4楼  发表于: 2014-05-08 20:48
跪求更新了的包,我也是遇到这样的问题。
级别: 新手上路
UID: 134810
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2017-09-26
最后登录: 2017-10-26
5楼  发表于: 2017-09-26 15:20
顶一下