ReferenceTable溢出(最大= 1024)

在我的android应用程序中,我经常调用一个返回一些数据的本机函数。 经过多次通话后,我收到了一个显示以下跟踪的崩溃。

W/dalvikvm(14588): ReferenceTable overflow (max=1024) W/dalvikvm(14588): Last 10 entries in JNI pinned array reference table: W/dalvikvm(14588): 1014: 0x41f3b7a8 cls=[B (38036 bytes) W/dalvikvm(14588): 1015: 0x411c6f88 cls=[B (1620 bytes) W/dalvikvm(14588): 1016: 0x405b2f48 cls=[B (1052 bytes) W/dalvikvm(14588): 1017: 0x411c4be0 cls=[B (92 bytes) W/dalvikvm(14588): 1018: 0x41f44c40 cls=[B (38036 bytes) W/dalvikvm(14588): 1019: 0x411c5a78 cls=[B (60 bytes) W/dalvikvm(14588): 1020: 0x413ac4e8 cls=[B (38036 bytes) W/dalvikvm(14588): 1021: 0x411c7970 cls=[B (52 bytes) W/dalvikvm(14588): 1022: 0x41e2b1b0 cls=[B (38036 bytes) W/dalvikvm(14588): 1023: 0x407e06c8 cls=[B (60 bytes) W/dalvikvm(14588): JNI pinned array reference table summary (1024 entries): W/dalvikvm(14588): 90 of [B 36B (90 unique) W/dalvikvm(14588): 127 of [B 44B (127 unique) W/dalvikvm(14588): 63 of [B 52B (63 unique) W/dalvikvm(14588): 78 of [B 60B (78 unique) W/dalvikvm(14588): 50 of [B 68B (50 unique) W/dalvikvm(14588): 30 of [B 76B (30 unique) W/dalvikvm(14588): 15 of [B 84B (15 unique) W/dalvikvm(14588): 18 of [B 92B (18 unique) W/dalvikvm(14588): 11 of [B 100B (11 unique) W/dalvikvm(14588): 9 of [B 108B (9 unique) W/dalvikvm(14588): 4 of [B 116B (4 unique) W/dalvikvm(14588): 5 of [B 132B (5 unique) W/dalvikvm(14588): 1 of [B 140B W/dalvikvm(14588): 4 of [B 156B (4 unique) W/dalvikvm(14588): 1 of [B 180B W/dalvikvm(14588): 1 of [B 204B W/dalvikvm(14588): 1 of [B 212B W/dalvikvm(14588): 2 of [B 244B (2 unique) W/dalvikvm(14588): 1 of [B 332B W/dalvikvm(14588): 1 of [B 1044B W/dalvikvm(14588): 1 of [B 1052B W/dalvikvm(14588): 1 of [B 1620B W/dalvikvm(14588): 510 of [B 38036B (510 unique) W/dalvikvm(14588): Memory held directly by tracked refs is 19432832 bytes E/dalvikvm(14588): Failed adding to JNI pinned array ref table (1024 entries) 

我已经发布了使用的字节数组,即ReleaseByteArrayElements。 一个本机function代码块

 jbyte *inArray = (*env)->GetByteArrayElements(env,datay,JNI_FALSE); jbyte *outArray = (*env)->GetByteArrayElements(env, datah,JNI_FALSE); int size=(*env)->GetArrayLength(env,hdata); .... unsigned char *data=outArray; memcpy(data,outbuf,out_size); (*env)->ReleaseByteArrayElements(env, datay, inArray,JNI_FALSE); (*env)->ReleaseByteArrayElements(env, datah, outArray,JNI_FALSE); data=NULL; 

任何想法?