因为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