ReferenceTable溢出(最大= 1024)

时间:2012-02-21 11:32:51

标签: java android c android-ndk java-native-interface

在我的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。 一个本机功能代码块

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;

任何想法?

0 个答案:

没有答案