local reference table overflow

串口通信改为JNI方式调用之后,出现本地引用溢出 local reference table overflow, 
因为navite最大允许512个本地引用。 
解决办法: 
1.本地引用的java类,用完必须删除本地引用,而且将其放入注册类函数中,用全局变量保存即可,避免频繁引用。 
jclass java_class = (*m_env)->FindClass(m_env,"com/android/server/Uart2JavaService"); 

如果放入注册类函数,只调用一次,避免引用溢出发生。 
(*m_env)->DeleteLocalRef(m_env,java_class); 

2.对一些字符串的引用,用完务必删除本地引用。 
  jstring text=(*m_env)->NewStringUTF(m_env,msg); 
 ....... 

(*m_env)->DeleteLocalRef(m_env,text); 



E/dalvikvm(  420): JNI ERROR (app bug): local reference table overflow (max=512) 
W/dalvikvm(  420): JNI local reference table (0x683af570) dump: 
W/dalvikvm(  420):   Last 10 entries (of 512): 
W/dalvikvm(  420):       511: 0x41ee9c48 java.lang.Class 
W/dalvikvm(  420):       510: 0x423b54d0 java.lang.Class 
W/dalvikvm(  420):       509: 0x426e2688 java.lang.String "xxxxxx" 
W/dalvikvm(  420):       508: 0x423b54d0 java.lang.Class 
W/dalvikvm(  420):       507: 0x426c3680 java.lang.String "TP_VERSION001" 
W/dalvikvm(  420):       506: 0x423b54d0 java.lang.Class 
W/dalvikvm(  420):       505: 0x426a6788 java.lang.String "ST_MCU_VERSION10... (17 chars) 
W/dalvikvm(  420):       504: 0x423b54d0 java.lang.Class 
W/dalvikvm(  420):       503: 0x426cac38 java.lang.String "PROJExxx_MODE00... (17 chars) 
W/dalvikvm(  420):       502: 0x423b54d0 java.lang.Class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值